幾天前我有一個奇怪的想法進入我的腦海,以奇怪的方式操縱if();
語句。讓我們繼續簡單的代碼。作爲測試條件的C函數調用
驗證碼:
if(printf("blahblah\n");{
}
我的想法:
1)對我來說,我覺得這個代碼將始終評估爲真(我的假設)因爲測試條件被函數調用所替代。
所以今天我做一本書提供的練習(只是爲了幫我更新了我學前幾天)。這是代碼。
驗證碼:
#include <stdio.h>
int main(void) // This program would add up the value enter by user , for e.g with the
{ //input of 20 , it will print out the sum of 1+2+3+4+5.....20.
int count , sum , size;
count = 0;
sum = 0;
printf("Enter a value to find the sum of it from 1 : ");
scanf("%d" , &size);
while (count++ < size)
sum = sum + count;
printf("sum = %d\n" , sum);
return 0;
}
通過使用第一碼我的想法,我修改了第二代碼到這一點。
#include <stdio.h>
int main(void)
{
int count , sum , size;
count = 0;
sum = 0;
printf("Enter a value to find the sum of it from 1 : ");
while (scanf("%d" , &size) && count++ < size)
sum = sum + count;
printf("sum = %d\n" , sum);
return 0;
}
問題:
1)根據本人在第一代碼所做的假設,scanf()
功能假設總是被評估爲true.That就是爲什麼第二次測試條件count++ < size
是確定while
語句中的語句是否將被執行的語句。
2.)但是當我運行程序時,我輸入30,但它不起作用,程序只是在我輸入後沒有做任何事情就停在那裏。
3.)我嘗試將`count ++ <大小作爲左操作數切換到測試條件,而輸入函數作爲右操作數。
4.)這樣做後,我得到的結果是不同的。當我嘗試運行程序時,程序執行第二個printf()
函數聲明,並打印出sum = 0
。
你的幫助是非常感謝,糾正我的錯誤。我願意從中吸取教訓。
我得到你的意思,它的意思printf()函數的返回值作爲測試條件。 – caramel1995 2011-05-04 08:50:03