2017-02-21 87 views
-9
#include<stdio.h> 
int main() 
{ 
int i=1,n; 
printf("enter value of n"); 
scanf("%d",&n); 
for(i=1;i<=n;i++) 
{ 
    printf("%d",i); 
    if(i=5) 
    break; 
} 
} 

爲什麼我的代碼的輸出是1,它不依賴於N(輸入)的值?如果條件差= =和==

+6

你爲什麼要出門!?您是否按了事故按鍵鎖定鍵? – StoryTeller

+1

因爲'if(i = 5)'將'5'分配給'i',因爲它是非零的,所以它的評價是真實的。 –

+1

比較運算符'=='看起來像一副耳環。不確定爲什麼我想到這個,只是發生了我的想法。 –

回答

3

這將始終等於true,因爲=實際上是設置值,而不是測試是否相等。使用==來測試是否相等。

11

=運算符將左值(在您的情況中,i)的值設置爲右側的表達式,然後返回變量的新值。這意味着i=5將i設置爲5,然後返回5,總是爲5 != 0。因此,您的程序會在打印第一個號碼後立即退出,即1

萬一你沒有聽到的是,=操作員設置左值到右手側的表達式中的值(在你的情況,I),然後返回變量的新值。這意味着I=5設置1到5,然後返回5,其總是如同5 != 0。因此,您的計劃立即退出第一個數字打印後,即1

+0

也許他的問題是C是區分大小寫的? –

+0

儘管OP在大喊,但答案並不需要回應OP的糟糕介紹。建議不要回頭去掉冗餘的大寫部分。 – chux

2

==將檢查兩個值是否相等。 =將作爲一項任務。因此 i=5將始終爲真,循環將爲break

+2

說起來,我聽不到你。 –