我發現,如果我給你x的值5裏面的文件並運行它,如下面的代碼我得到的差值輸出爲392就是以下兩個C代碼
#include<stdio.h>
#define CUBE(r) ((r)*(r)*(r))
int main()
{
int x;
x=5;
printf("%d\n", CUBE(++x));
return 1;
}
但是,當我使用「scanf()的」獲得x的值,給輸入爲5以下的代碼我得到的輸出爲336
#include<stdio.h>
#define CUBE(r) ((r)*(r)*(r))
int main()
{
int x;
scanf(" %d",&x);
printf("y is %d\n", CUBE(++x));
return 1;
}
爲什麼我得到這樣的輸出
我正在使用gcc編譯器 – siva
也打印'x'的值。學習使用調試器。測試'scanf'的結果。瞭解[未定義行爲](http://en.wikipedia.org/wiki/Undefined_behavior)。用'gcc -Wall -g'編譯(用'gdb'調試)。改進代碼直到沒有警告。 –
順便說一下,你的'cube'應該是一個內聯函數'inline int cube(int z){return z * z * z; }' –