c语言常量 负数,在C/C++中,负数是否返回false?
Keith Thomps..
6
简短的答案:负值,以及通常所有非零值,在用作条件时都被视为true。
对于C,在许多上下文中将表达式视为条件。条件不一定是类型bool或_Bool; 该类型仅在1999年的标准中才添加到该语言中。
最明显的这些上下文的是在表达if语句,但也有其他例子:while,do-while,在第二个表达式for报头,所述的第一个操作数?:条件运算符,和操作数的(一个或多个)!,&&和||运营商。(我认为这是一个详尽的清单,但我不确定。)
这是C标准关于if语句行为的说明(“两种形式”是指if带有或不带有else子句的情况):
在两种形式中,如果表达式比较不等于0,则执行第一个子语句。
这意味着:
if (foo) ...
等效于此:
if ((foo) != 0) ...
(添加额外的括号以避免出现任何运算符优先级问题)。如果foo是type,则含义很清楚int。If foo是某种浮点类型,0将转换为相同类型(如果该值恰好是负零或NaN,则可能会引起一些微妙)。如果foo是指针,则将其0视为空指针常量;if (ptr)等价于if (ptr != NULL)(假设的定义NULL是可见的)。
对于C ++,规则的表述有些不同,但是效果是相同的。C ++ if语句中的条件将转换为类型bool(与C语言不同,该类型bool自C ++诞生以来就已内置于C ++中)。boolC ++标准将任何标量类型的值转换为ÿ
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
