关于简单 c 编程代码的几个问题



我最近刚开始在学校学习c编程,并且已经偶然发现了简单的障碍。我称之为简单,因为我可以感觉到解决方案就在那里,但似乎无法让它工作。

问题 1:我试图让一个人输入 2 个变量,一个用于 X,一个用于 Y。我学会了使用char c; c = getchar();scanf_s("%d", &n);

我想知道我是否可以使用这两个中的任何一个来使一个人能够为 X 和 Y 输入 2 个不同的变量。我还在网上看到,有时人们被要求输入:x y(中间有一个空格(,然后代码会将第一个输入识别为 x,将空格之后的输入识别为 y。

第二个问题是我尝试使用命令x>>31显示值 x 的 32 位二进制代码,但我得到的输出是 0。关于如何解决这个问题的任何线索?例如,我有一行代码是:printf("%d & %d = %d %dn", num1, num2, result1, result1>>31);但最后一个 %d 显示0而不是result1的 32 位二进制代码 .picture 我的代码和我得到的输出

回复:scanf,我建议阅读该函数的文档。此页面适用于 Visual Studio 2015,但这些示例应该对您正在使用的任何 IDE 有所帮助:

https://msdn.microsoft.com/en-us/library/w40768et.aspx

您误解了">>"运算符的作用。(result1>>31( 会将结果 1 向右移动 31 位。这将导致 0 位值为 32,除非它是无符号且非常大(超过 2^31,大约是 40 亿,在这种情况下,它将导致 1(或有符号和负数,在这种情况下我相信它解析为 -1。

您可以使用>>来显示数字的二进制表示形式,但您需要多次使用它来提取每个位。您看到的 0 是 32 位值的第一个位。

我建议您首先将每个位输出到单独的行上,以便您可以看到代码在做什么,然后再将它们连接在一起组成一个 32 位数字。

最新更新