2014-04-05 42 views
-1

我正在将一个int传递给我的lame程序中的一个函数。它传入一个数字将其转换为二进制表示形式,作为一个int数组。将int值传递给一个函数时发生变化

typedef int bool; 

bool* conv2bin(int num) 
{ 
    blah blah blah return binary as bool array 
} 

我通过78,如果我通过后立即printf(),我得到781237412753-124?

我是C(来自C++)的新手,所以请告诉我我是否在做一些非常愚蠢的事情?

这似乎应该很容易,但它不是...?

编辑:

我做错疯玩:

printf("%d", num); 

编辑2: 它必须与INT东西,因为在函数结束时,它会检查,如果我们扣除数足以达到num == 0,但它表示我们不在0.它做的很奇怪。它还说,二进制为0000000001001111,并且它应该是0000000001001110.

编辑3:

哇,我吸。谢谢弗洛里斯!这是一个漫长的一天。

+2

请出示你的'printf'声明。我99%确定你的格式字符串错误。 – Floris

+1

blah blah does not compile –

+2

将'printf'改为'printf(“%d \ n”,num);' - 我敢打赌,现在你会看到'78'后面有一个回车符或更多的数字背靠背)。错误是在你的代码中的其他地方。展示更多。 – Floris

回答

2

这里猜... 您的打印输出以正确的两位数字开头:78

但是,如果您在格式化字符串的末尾没有包含\n,那么您打印的下一个内容将被连接起来。接下来的事情也会如此。

我怀疑你的问题就会消失,当你改变你的print语句

printf("%d\n", num); 
相关问题