我的 C++ 编程课上有一项作业,要求编写一个输出变量值的二进制值的函数。
例如,如果我将“a”的值设置为字符,我应该得到“a”输出的二进制值。
我的 C++ 教授并不是全世界最伟大的,而且我在使用他给我们的神秘示例来使我的代码正常工作时遇到了困难。现在,无论我设置什么,我的代码都只输出二进制值 11111111(除非它为 NULL,然后我得到 00000000)。
这是我的代码:
#include <iostream>
#define useavalue 1
using namespace std;
void GiveMeTehBinary(char bin);
int main(){
#ifdef useavalue
char b = 'a';
#else
char b = '\0';
#endif
GiveMeTehBinary(b);
system("pause");
return 0;
}
void GiveMeTehBinary(char bin){
long s;
for (int i = 0; i < 8; i++){
s = bin >> i;
cout << s%2;
}
cout << endl << endl;
}
提前非常感谢你们。你总是非常有帮助:)
编辑:现在已修复 - 非常感谢:D 问题是我没有存储位移中的值。我已将代码更新到上面的工作状态。
The compiler should warn you about certain statements in your code that have no effect1. Consider
bin >> i;
这不会执行任何操作,因为您不会将此操作的结果存储在任何地方。
另外,你为什么声明tehbinary
作为数组?你曾经使用过的只是one元素(当前元素)。仅存储当前位就足够了。
其他一些事情:
-
NULL
只能与指针值一起使用。您的用法有效,但这不是预期的用法。你真正想要的是一个空字符,即'\0'
.
- 请使用真实的、描述性的名称。我清楚地记得自己使用的变量称为
tehdataz
等等,但这确实使代码难以阅读,一旦最初的有趣消失,当您尝试阅读代码时,以及对为您的代码评分的人来说,这都会很烦人。
- 正确格式化代码有助于理解很多:使缩进符合逻辑且一致。
1 If you’re using g++
, always pass the compiler flags -Wall -Wextra
to get useful diagnostics about your code.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)