Cの魅力
刚刚又复习了一遍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(); }
程序原理:收费50元,谢谢~~~ ^-^
为什么可以这样用?:呢?我们都知道,在C语言中任何一个""都是一个字符串。比如"abc"就是一个字符串。 但是如果我们这样定义一个int a="abc";会怎么样?也许大家都知道了,a中的值就是"abc"的首地址。所以我们得到一个结论,"abc"如果把它看成是一个整体,那么它的值不是一个字符串,而是指向"abc"首地址的一个数据(标准编译模式下)。
于是,我们可以这样解释number==1?"is":"are"了。 number==1?("is"的首地址):("are"的首地址) 如果number==1,则表达式的值就是"is"的首地址 如果number!=1,则表达式的值就是"are"的首地址 所以,表达式的值被printf()函数中的%s按照字符串的首地址接收、显示出来。
同样的道理,我们可以去解释sex?"cock":"hen"
没见过这样的?:用法吧,去写一个这样的语句去崩溃你的C语言老师~~我们的C语言老师是一个年轻漂亮的女研究生,基础知识非常的牢~~她第一次见也头晕了半天。
~~~让女孩子头晕~~~这就是Cの魅力
to be continue...
[此贴子已经被作者于2005-5-4 14:55:57编辑过]