#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(輸入)的值?如果條件差= =和==
#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(輸入)的值?如果條件差= =和==
這將始終等於true,因爲=實際上是設置值,而不是測試是否相等。使用==來測試是否相等。
=
運算符將左值(在您的情況中,i
)的值設置爲右側的表達式,然後返回變量的新值。這意味着i=5
將i設置爲5,然後返回5,總是爲5 != 0
。因此,您的程序會在打印第一個號碼後立即退出,即1
。
萬一你沒有聽到的是,=
操作員設置左值到右手側的表達式中的值(在你的情況,I
),然後返回變量的新值。這意味着I=5
設置1到5,然後返回5,其總是如同5 != 0
。因此,您的計劃立即退出第一個數字打印後,即1
。
也許他的問題是C是區分大小寫的? –
儘管OP在大喊,但答案並不需要回應OP的糟糕介紹。建議不要回頭去掉冗餘的大寫部分。 – chux
==
將檢查兩個值是否相等。 =
將作爲一項任務。因此 i=5
將始終爲真,循環將爲break
。
說起來,我聽不到你。 –
你爲什麼要出門!?您是否按了事故按鍵鎖定鍵? – StoryTeller
因爲'if(i = 5)'將'5'分配給'i',因爲它是非零的,所以它的評價是真實的。 –
比較運算符'=='看起來像一副耳環。不確定爲什麼我想到這個,只是發生了我的想法。 –