c++的弱智问题!

来源:百度知道 编辑:UC知道 时间:2024/06/02 01:34:15
我今天看一本编程方面的书,c++程序,有一行是这么写的,
overdue=yn!='y';不明白这是什么意思啊,尤其是'y'不应该是一个数字吗?怎么跑到这里去了?
那为什么用'y'呢?'y'到底在这里充当了什么角色?

overdue=yn!='y';

表面看起来,似乎 yn是一个 char或者byte型的变量,这段代码的意思是 先进行 yn!='y',因为 yn!='y'返回的是真或者假,所以编译器把这个值隐式转换成数字,然后赋值给overdue,因为比较运算符的优先级要比赋值要高,所以这里应该不会了现语法错误。
你可以这么理解
假设overdue是一个int型的,这段代码可以表示为
overdue = ( int ) ( yn != 'y' );

很有可能在这里 yn 变量充当了一个标志位的角色,,它可以表示是或者否,所以我猜的应该可能是 'Y'或者'N',而这里又有其它需要把这个结果用一个数字来表示,,我只能这么理解了,

要不你把代码贴全了看看

!=是一个条件运算符,这句话的意思是如果yn不等于字符'y',那么结果为真,如果yn等于'y'的话,那么结果为假,无论结果是什么都赋值给变量overdue。
至于为什么要用'y',那当然是你程序的原因了,要实现什么功能啊,在此没有办法给你解释,正所谓具体情况具体对待嘛!

overdue=yn!='y'其中ocerdue 和yn都是变量.
'y'就是字符y的意思.整个语句的意思就是说,当yn!='y'的时候,就把yn的值赋给overdue.从右到左运算.先进行yn!='y',再进行overdue=yn.不过楼上ftccpig说的overdue是int型,这点是错误的.overdue也应该是字符类型.
其实整个语句就是那么简单,若字符yn不是y的时候,那么overdue=yn;