我刚刚开始在我的学校学习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
的32位二进制代码。picture of my code and the output I get
答案 0 :(得分:0)
Re:scanf,我建议阅读该功能的文档。此页面适用于Visual Studio 2015,但这些示例应该可以帮助您使用任何IDE:
https://msdn.microsoft.com/en-us/library/w40768et.aspx
你误解了“>>”运营商。 (result1>> 31)将result1右移31位。这将导致32位值为0,除非它是无符号且非常大(超过2 ^ 31,大约40亿,在这种情况下将导致1)或签名和否定,在这种情况下我相信它解析为-1。
您可以使用>>显示数字的二进制表示,但您需要多次使用它来提取每个位。你看到的0是32位值的第一位。
我建议你先从一个单独的行输出每个位,这样你就可以看到代码在做什么,然后将它们连接成一个32位的数字。