我在C++编程类中有一个作业分配,以编写一个输出变量值的二进制值的函数。

因此,例如,如果我将一个字符的“a”值设置为char,则应该获得“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问题是我没有存储位移的值。我已经将代码更新为上面的工作状态。

最佳答案

编译器应警告您代码中某些无效的语句。考虑

bin >> i;

这不会做任何事情,因为您不会在任何地方存储此操作的结果。

另外,为什么还要将tehbinary声明为数组?您所使用的只是一个元素(当前元素)。仅存储当前位就足够了。

其他一些事情:
  • NULL必须仅与指针值一起使用。您的用法有效,但这不是预期的用法。您真正想要的是一个空字符,即'\0'
  • 请使用真实的描述性名称。我很清楚地记得自己使用的是tehdataz等变量,但这确实使代码难以阅读,一旦最初的 Jest 消失了,当您尝试阅读代码时,无论是谁还是对代码进行评分的人,都会感到烦恼。
  • 正确设置代码格式可以帮助您理解很多内容:使缩进逻辑且一致。


  • 1如果您使用的是g++,请始终传递编译器标志-Wall -Wextra以获得有关代码的有用诊断信息。

    08-16 03:22