那么有人可以帮助我掌握if(...)或while(...)之类的任务中的所有(或大部分相关)情况吗?
我的意思是:
if(a = b)
Run Code Online (Sandbox Code Playgroud)
要么
while(a = &c)
{
}
Run Code Online (Sandbox Code Playgroud)
等等...
它何时评估为真,何时评估为假?根据作业中使用的类型,这会发生变化吗?什么时候有指针涉及?
谢谢.
Bru*_*eis 15
在C++中,归因评估为归属的值:
int c = 5; // evaluates to 5, as you can see if you print it out
float pi = CalculatePi(); // evaluates to the result
// of the call to the CalculatePi function
Run Code Online (Sandbox Code Playgroud)
所以,你的陈述:
if (a = b) { }
while (a = &c) { }
Run Code Online (Sandbox Code Playgroud)
大致相当于:
a = b
if (b) { }
a = &c
while (&c) { }
Run Code Online (Sandbox Code Playgroud)
与...相同
a = b
if (a) { }
a = &c
while (a) { }
Run Code Online (Sandbox Code Playgroud)
if (a)当他们不是布尔人时,那些等等呢?好吧,如果它们是整数,则0为假,其余为真.这个(一个"零"值 - >假,其余 - >真)通常都有,但你应该确实引用一个C++引用(但请注意,写入if (a == 0)并不比if (!a)阅读器简单得多) ).
无论如何,你应该总是避免模糊代码的副作用.
你永远不需要这样做if (a = b):你可以通过其他更清晰的方式实现完全相同的东西,这看起来不会是一个错误(如果我读到的代码就像if (a = b)我想到的第一件事那样是开发人员写道,这是一个错误;第二,如果我三重检查它是正确的,是我恨他!:-)
祝好运
赋值"operation"也返回一个值.它是表达式的类型和值.如果由if类型声明处理:
while (expr)do ... until (expr)if (expr)?(真值):假值expr被评估.如果它不是零,那是真的.如果为零,则为假.