首页 > 解决方案 > 关于简单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. 我的代码图片和我得到的输出

标签: c

解决方案


回复: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 位数字。


推荐阅读