作者Waterpig (waterpig)
看板C_and_CPP
標題[問題] 初學遇到問題
時間Mon Aug 17 03:12:42 2009
以下是照著書打的
#include<stdio.h>
#include<stdlib.h>
#define Inter_i (i>3)?"i>3":"i<=3"
#define MAX(a,b) (a>b)?(a):(b)
int main (void)
{
int i=3;
(i>3)?printf("Integer i>3\n"):printf("Integer i<=3\n");
(i>3)?
printf("Integer "),
printf("i>3\n")
:
printf("Integer "),
printf("i<=3\n")
;
printf("Integer %s\n",(i>3)?"i>3":"i<=3");
printf("Integer %s\n",Inter_i);
printf("MAX(300.7,50)=%f\n",MAX(300.7,50));
system("pause");
return 0;
}
==============================
Integer i<=3
Integer i<=3
Integer i<=3
Integer i<=3
MAX(300.7,50)=300.7
==============================
沒有問題
問題出在 當我把i=3改成i=5時
會變成這樣...
==============================
Integer i>3
Integer i>3
i<=3
Integer i>3
Integer i>3
MAX(300.7,50)=300.7
==============================
到底是哪裡出錯了?= =
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.37.36
推 snowlike:給程式碼第16行開頭一個左括弧,第17行結尾一個右括弧 08/17 03:40
→ Waterpig:可以了...但為什麼會這樣= =? 08/17 03:45
推 christianSK:我猜是三元運算以為他已經結束了 所以繼續往下讀到 08/17 03:46
→ christianSK:printf 就繼續往下做了 不知道對不對 08/17 03:46
→ christianSK:紅色那行是額外的輸出 你應該有發現吧!? 08/17 03:47
恩...
那為什麼只有出現
.
.
Integer i>3
i<=3
.
.
而不是
.
.
Integer i>3
Integer i<=3
.
.
※ 編輯: Waterpig 來自: 118.160.37.36 (08/17 03:51)
→ snowlike:該程式碼實際同第16行結尾逗號更改為分號,第17行退1縮排 08/17 04:09
恩
我現在問題在於
printf("Integer i<=3\n");
printf("Integer "),printf("i<=3"\n");
這兩個寫法不是一樣意思嗎?
那結果為什麼會變成那樣?= =
※ 編輯: Waterpig 來自: 118.160.37.36 (08/17 04:18)