1. 程式人生 > >if語句裡面如果是賦值語句

if語句裡面如果是賦值語句

我們習慣了向if裡面傳遞布林值,如果為true就進入if語句塊中;或者傳入一個判斷語句(表示式a==表示式b);或者傳入數值,0為false,其他都為true。等等

初學者很容易在傳入判斷語句的時候將==寫成=,而導致程式碼失誤,這時會有什麼情況發生呢?

  1. 編譯器在編譯程式碼的時候是不會報錯的,程式可正常執行
  2. 程式如何執行 來看一下這段程式碼:
#include<stdio.h>
int main()
{
    int a;
    scanf("%d",&a);  
    if(a=1) {
		printf("if---%d\n",a);
	} else { 
		printf
("else---%d\n",a); } return 0; }

如果我輸入2,程式會輸出什麼? 在這裡插入圖片描述 如果我輸入0,程式會輸出什麼? 在這裡插入圖片描述

好像不管輸入什麼都會進入if,而且輸出的a最後都是if語句中賦值的值了,這是怎麼回事? 很明顯,如果if語句裡面是賦值語句的話,是執行賦值語句,再將賦值語句的最後結果作為判斷條件,看是否要進入if語句。

看一下下面的程式碼:

#include<stdio.h>
int main()
{
    int a;
    scanf("%d",&a);  
    if(a=0) {
		printf("if---%d\n",a);
	} else
{ printf("else---%d\n",a); } return 0; }

在這裡插入圖片描述

賦值為0後,不論你輸入什麼都是進入else語句了~

還是建議不要在if語句中使用賦值語句,這樣程式不會報錯,很容易帶來超出預期的結果。