作者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
1F:推 snowlike:给程式码第16行开头一个左括弧,第17行结尾一个右括弧 08/17 03:40
2F:→ Waterpig:可以了...但为什麽会这样= =? 08/17 03:45
3F:推 christianSK:我猜是三元运算以为他已经结束了 所以继续往下读到 08/17 03:46
4F:→ christianSK:printf 就继续往下做了 不知道对不对 08/17 03:46
5F:→ 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)
6F:→ 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)