兩種賦值 結果不同。
#include <stdio.h>
int main()
{
? ??
? ? int x,y = 10;
? ? //使用簡單賦值語句實現x乘以2。
? ? x=x*2 ;
? ? //使用復合賦值語句實現y乘以2。
? ? y*=2;
? ? printf("x=%d\n", x);
? ? printf("y=%d\n", y);
? ? return 0;
}
????在慕課網在線ide 輸出結果是?
x=0?
y=20
????原版的代碼是
#include <stdio.h>
int main()
{
? ? int x = 10;
? ? int y = 10;
? ? //使用簡單賦值語句實現x乘以2。
? ? x=x*2 ;
? ? //使用復合賦值語句實現y乘以2。
? ? y*=2;
? ? printf("x=%d\n", x);
? ? printf("y=%d\n", y);
? ? return 0;
}
????輸出結果是
x=20
y=20?
發(fā)生了什么 導致這兩種結果的差異 呢 ?
2015-06-26
相當于
C標準規(guī)定:函數中定義的變量(局部變量)未賦予初值的話,其值是不確定的。 只有全局變量會被默認初始化為0。
也就是說x的值完全是未定的,可能是0,也可能是任何值。 ?不同的平臺、不同的編譯器可能會有不同的結果,對此測試毫無意義。 而且編譯器通常會給出“x未初始化”之類的警告。
2015-06-26
好吧 自答。。。?
慕課網 的 ?后臺 出來。。。。
這個在線版的IDE 該換了。。。。
本人親測,, windows 上,無問題。。。。。。
2015-06-26
int x,y = 10; ? 結果是x=0, y=10?