c - 关于简单c编程代码的几个问题
问题描述
我最近刚开始在我的学校学习 c 编程,并且已经偶然发现了一些简单的障碍。我称之为简单,因为我可以感觉到解决方案就在那里,但似乎无法让它发挥作用。
问题 1:我试图让一个人输入 2 个变量,一个用于 X,一个用于 Y。我已经学会了使用char c; c = getchar();
和scanf_s("%d", &n);
我想知道是否可以使用这两者中的任何一个来使一个人能够为 X 和 Y 输入 2 个不同的变量。我还在网上看到有时要求人们输入:xy(中间有空格)和然后代码会将第一个输入识别为 x,将空格后面的输入识别为 y。
第二个问题是我尝试使用命令x>>31
显示值 x 的 32 位二进制代码,但我得到的输出是 0。关于如何解决这个问题的任何线索?例如,我有一行代码是:printf("%d & %d = %d %d\n", num1, num2, result1, result1>>31);
但最后一个 %d 显示0
而不是result1
. 我的代码图片和我得到的输出
解决方案
回复:scanf,我建议阅读该函数的文档。此页面适用于 Visual Studio 2015,但无论您使用哪种 IDE,这些示例都会对您有所帮助:
https://msdn.microsoft.com/en-us/library/w40768et.aspx
您误解了“>>”运算符的作用。(result1>>31) 将 result1 右移 31 位。这将导致 0 为 32 位值,除非它是无符号且非常大(超过 2^31,大约为 40 亿,在这种情况下它将导致 1)或有符号和负数,在这种情况下我相信它解析为 -1。
您可以使用 >> 来显示数字的二进制表示,但您需要多次使用它来提取每个位。您看到的 0 是 32 位值的第一位。
我建议您首先在单独的行上输出每个位,这样您就可以看到代码在做什么,然后再将它们连接在一起输出为一个 32 位数字。
推荐阅读
- java - 在不实际运行代码的情况下,如何知道实现 Comparable<> 的类的排序顺序?
- javascript - 如何在圆环图上显示鼠标悬停事件的文本
- android - Kotlin Lambda 在 StartActivity 之后为空
- oracle - 如何在函数“格式表”中“添加成员”以在 Powershell 中获取新的“成员类型”?
- git - git 是否可以使用更智能的合并冲突算法?
- android - Android将图像从图库加载到图像视图而不减小图像大小
- kotlin - 使用可为空参数解析 kotlin Pair 在空 json 上失败
- azure-active-directory - ADFS 和身份服务器 4 的自动登录(跳过登录页面)
- c# - 如何在 ASP.NET Core 3.1 的 AspnetUser 中添加列?
- php - 循环遍历 3 个数组