c語言奇偶程式內容問題?

目前小弟正在學c語言:

發現一個其他人奇偶程式內有一段看不懂?不知道有大大可以幫我解釋一下嗎?

程式如下:

#include<stdio.h>

int main()

{

int a;

printf("輸入一個數\n");

scanf("%d",&a);

if ("%d=0",a%2) <<<<<<<就是這一段

{printf("%d是奇數\n",a);}

else

{printf("%d是偶數\n",a); }

system("pause");

return 0;

}

我知道可以用 if (a%2==0)也可以寫(if內容要改偶,else要改奇),

但這段在我看來不是如果是偶數,if不就成立嗎?為什麼是設定奇數?

程式跑出來是對的~搞不懂!!有大大可以幫我說明一下嗎?

已更新項目:

謝謝t大的回答,還是有不懂的

,你的因果關係我知道,因看不懂,果我懂

以我的想法,if("%d=0",a%2),若用2帶入的話

不是因a%2所以2/2餘數0,

故%d=0那邊得0=0(可以說0指定0嗎?)所以成立嗎?

那第一行結果不是該設定為偶數嗎?

不知道t知道我的表達嗎?

為什麼t大一開始就知道

V不是0就是TRUE執行1,V怎麼求得的?

感恩!!

2 個解答

評分
  • Tai
    Lv 5
    7 年前
    最佳解答

    if (v)

     命令句1

    else

     命令句2

    上述 if-else 的句型,

    v 是 non-zero 則等同 true, 執行命令1

    v 是 zero 則等同 false, 執行命另2

    對奇數 a,如 a = 3 時 a%2 為 1,if (a%2) 等同 if (1) 等同 if (true)

    對偶數 a,如 a = 4 時 a%4 為 0,if (a%2) 等同 if (0) 等同 if (false)

    2013-10-16 13:47:23 補充:

    更正: 對偶數 a,如 a = 4 時 a%2 為 0,if (a%2) 等同 if (0) 等同 if (false)

    2013-10-16 13:53:12 補充:

    回湘牙子

    V不是0就是TRUE執行1 ==> C/C++ 規定的。

    參見 MSDN 文件 "if else 陳述式 (C++)" http://msdn.microsoft.com/zh-tw/library/y34a3dk2.a...

    if("%d=0",a%2),若用2帶入的話 ... 所以2/2餘數0 ==> 沒錯,所以為 if (0),等同 if (false),執行到命令句2,印出偶數。

    還有 if("%d=0",a%2) 是奇葩寫法,"%d=0" 對 if 沒有意義,應改為 if(a%2)

    2013-10-16 14:00:15 補充:

    抱歉,請參考英文版 http://msdn.microsoft.com/en-us/library/y34a3dk2.a...

    if ( expression )

    statement1

    [else

    statement2]

    If the value of expression is nonzero, statement1 is executed (非零執行 1)

    statement 2 is executed if the value of expression is zero (零執行 2)

    2013-10-16 18:00:26 補充:

    不客氣. 自學者通常很有心學習,趕快變成高手吧 :D

  • 7 年前

    0是false打太快打錯......

還有問題?馬上發問,尋求解答。