簡體   English   中英

C程序輸出的原因

[英]C program reason for the output

#include<stdio.h>

#define MAX(a,b) (a>b?a:b);

main()
{
 int x;
 x=MAX(3+2,2+7)
 printf("%d",x);
}

我檢查了該程序的輸出將得出9。為什么?

因為一切都按預期進行。

...因為9比5大? 我猜您真的是在問它如何工作。 (可能要查找三元運算)所以...

#define MAX(a,b) (a>b?a:b); 

是一個宏,名稱為MAX,它帶有兩個值“ a”和“ b”。 它的工作原理是,如果a大於b,則返回a,否則返回b。

在這種情況下,3 + 2 = 5 = a和2 + 7 = 9 = b。 因此,宏可以歸結為:

if (5 > 9)
  return 5
else
  return 9

然后,當您的代碼運行時,您可以考慮將宏調用替換為該代碼:

void main()
{
    int x;
    if (5 > 9)
        x = 5;
    else
        x = 9;
    printf("%d", x);
}

顯然,我們將返回9,將其存儲為'x'然后打印出來。

有幫助嗎?

#define MAX(a,b) (a>b?a:b);

int宏定義,如果是espression,則是三進制?:這種方式工作

條件? [條件為真時的值]:[條件不滿足時的值]

條件是在C中有效的任何表達式(因此0為false,其他所有條件為true)

如果滿足條件,則表達式等於第一個值(位於?后面的那個),或者等於第二個值(位於:后面的那個),如果不滿足條件

因為2 + 7 = 9大於3 + 2 = 5。

不過,一般而言,在編寫此類宏時,應注意將參數括在替換宏的表達式中的括號內,以免有人通過優先級比所使用的運算符低的運算符傳遞表達式的風險,從而弄亂了你的表情。

因此,通常您會寫:

#define MAX(a,b) ((a)>(b)?(a):(b));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM