感受一下C语言的魅力吧!原来C语言这么有用啊!
如果我想要写一个程序,当sex=0的时候表示母鸡,1的时候表示公鸡,用number表示鸡的数量。并把他们用在一个英文句子中显示出来,你会如何做?(请注意英语中的可数名词的复数要+s)
也许你会去分配大量的if语句,并写出四个句子??你不得不这样做,因为我并没给你多余的变量或者字符串,你可不能违背神的意志自己创造出几个新的东西出来哦。
void main(){
int sex=0,number=1;
if(sex==0)
if(number==1)
printf("There is %d hen in the garden.\n",number);
else
printf("There are %d hens in the garden.\n",number);
else
if(number==1)
printf("There is %d cock in the garden.\n",number);
else
printf("There are %d cocks in the garden.\n",number);
getch();
}
程序原理:先判断sex,确定这只(些)鸡是公的还是母的,然后再判断number,确定是应该用单数还是复数。
这样是不是很烦琐?其实C语言要解决这样的问题只用"一句简单的printf()函数"就够了。
void main(){
int sex=0,number=10;
printf("There %s %d %s in the graden.\n",
number==1?"is":"are",
number,
number==1?(sex?"cock":"hen"):(sex?"cocks":"hens"));
getch();
}
程序原理:略了。。。。应该都看的明白了~~!!!
为什么可以这样用?:呢?我们都知道,在C语言中任何一个""都是一个字符串。比如"abc"就是一个字符串。
但是如果我们这样定义一个int a="abc";会怎么样?也许大家都知道了,a中的值就是"abc"的首地址。所以我们得到一个结论,"abc"如果把它看成是一个整体,那么它的值不是一个字符串,而是指向"abc"首地址的一个8bit数据(标准编译模式下)。
于是,我们可以这样解释number==1?"is":"are"了。
number==1?("is"的首地址):("are"的首地址)
如果number==1,则表达式的值就是"is"的首地址
如果number!=1,则表达式的值就是"are"的首地址
所以,表达式的值被printf()函数中的%s按照字符串的首地址接收、显示出来。
同样的道理,我们可以去解释sex?"cock":"hen"
你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=986909
|
- 评论人:gggggg
2007-09-16 09:25:02
|
|||
gffffff |
||||
|
- 评论人:nvsdzjl
2007-01-12 02:58:19
|
|||
理解的很深刻啊!多谢!
|
||||
|
- 评论人:flown
2005-03-21 21:45:50
|
|||
good |
||||