關于X的賦值
#include <stdio.h>
int x = 77;
void fn1()
{
? ? printf("fn1(): x=%d\n", x); ? ? ??
}
int main()
{
? ? int x = 10; ?//x在這里賦值為10,在下一行判定為大于所以運行if括號里的代碼
? ? if(x>0)
? ? {
? ? ? ? int x = 100; //x被賦值為100
? ? ? ? x /= 2; //在這里計算到結果x=50
? ? ? ? printf("if語句內, x=%d\n", x); ? ? ??
? ? } //跳出if語句,在這里x是否重新被賦值為10
? ? printf("main方法內, x=%d\n", x);
? ? fn1();
? ? return 0;
}
運行結果:
if語句內, x=50
main方法內, x=10
fn1(): x=77
在運行完if語句后跳出是否重新被賦值為x=10??
2015-09-18
最開頭的那個值為77的x ?和 main函數中初值為10的x 和 if中的那個x 是三個不同的變量,只是同名而已。
在if中改變的是if中的那個x值,不會影響到main中的那個x,也不會影響到前面的那個x,所以沒有什么“重新賦值”一說。
只有fn1函數中沒有再次定義x,所以它用的是最上面的那個x,打印出的就是77了。