C++ 变量定义在c++;?
如果我将变量定义用作C++ 变量定义在c++;?,c++,C++,如果我将变量定义用作if,while,for语句的的控制结构,它会做什么 考虑以下两段代码: 我不知道变量定义是“返回”一个bool类型以指示定义的成功,还是变量定义在用作控制结构的条件时返回变量本身。 我认为第二个片段可以很好地工作,因为status是 =运算符。该条件测试状态是否为真。 我的一个朋友说第二个片段出错,因为变量status未声明。语句都很好 在第一种情况下,get_num()返回一个分配给新声明的变量i的值。如果整数不为零,则计算为真;如果整数为零,则计算为假。所以,只要i不是
if
,while
,for
语句的的控制结构,它会做什么
考虑以下两段代码:
我不知道变量定义是“返回”一个bool
类型以指示定义的成功,还是变量定义在用作控制结构的条件时返回变量本身。
我认为第二个片段可以很好地工作,因为status
是
=
运算符。该条件测试状态
是否为真
。
我的一个朋友说第二个片段出错,因为变量status
未声明。语句都很好
在第一种情况下,get_num()返回一个分配给新声明的变量i的值。如果整数不为零,则计算为真;如果整数为零,则计算为假。所以,只要i不是零,这个循环就会运行
在第二条语句中,find似乎返回一个分配给status的bool。只要status为true,循环就会运行
在while的括号内,可以使用相应的变量,即,可以在第一个循环中使用i,在第二个循环中使用status,这确实是这样写的优点。但是,在第二个代码段中,它并没有真正意义,因为您已经知道status是true。。。否则,循环将不再执行。如果在这里更改状态,这也不起作用,因为每个循环运行都会有一个新的本地声明的状态变量。而循环需要一个bool
表达式
while({BOOL}) {...}
在上述代码的情况下
while(bool status = find(word)) {...}
简化为
while(status) {...}
在每次循环执行开始时,状态初始化为find(word)
的结果
状态
随后在循环中可用
§3.3.3区块范围
在for init语句、for范围声明中声明的名称,条件为if、while、for,
和switch语句是if、while、for或switch语句(包括受控
声明),且不得在该声明的后续条件中或在最外层重新声明
受控语句的块(或者,对于if语句,任何最外层的块)
关于你的第二个问题:
不知道变量定义是否“返回”布尔类型以指示定义的成功,或者变量定义在用作控制结构的条件时返回变量本身
只要变量可转换为bool,就没有问题
给定
可以表示为
while(static_cast<bool>(x)) {...}
while(static_cast(x)){…}
只要Foo
可转换为bool,就可以在中声明并使用它,而是有条件的。赋值运算符通常会返回对左侧的引用<代码>a=b
返回对a的引用。如果its可转换为bool
,则可以在条件(非零int
convert to true)中进行检查。与和@magurra相关-此处没有赋值运算符。那些符号是初始化,不是赋值。@Pete Becker,是的,这就是为什么它只是一个注释而不是答案。我不确定它如何与初始化一起工作。@BartekBanachewicz感谢您的标准建议。;-)谢谢你的回答。;-)
while(status) {...}
while(Foo x = Expression()) {...}
while(static_cast<bool>(x)) {...}