sho*_*ace 3 c++ assert comma-operator
在以下代码中:
#include <iostream>
#include <assert.h>
int main()
{
int a,b;
cin>>a>>b;
char c,d;
cin>>c>>d;
assert ((a==b,a*b==9,c==d));
assert ( a==b && a*b==9 && c==d );
}
Run Code Online (Sandbox Code Playgroud)
如果你 :
第一个断言语句是弱的还是我对断言语句不了解?
a==b,a*b==9,c==d是逗号表达式。对于内置逗号运算符:
在逗号表达式中
E1, E2,表达式E1被求值,其结果被丢弃(虽然如果它有类类型,它不会被销毁,直到包含完整的表达式结束),并且它的副作用在表达式的求值E2开始之前完成逗号表达式结果的类型、值和值类别正是第二个操作数 的类型、值和值类别
E2。
它返回最后一个操作数作为其返回值,即c==d。a==b并a*b==9得到评估,但他们的结果被丢弃。所以assert ((a==b,a*b==9,c==d));只检查c==d事实上。
另一方面assert ( a==b && a*b==9 && c==d );检查所有条件;哪些是通过&&那么连接必须都是true通过检查。
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |