执行 C++ 代码 cout<<(5||2); 后将输出 $1$。()
这道题看似简单,实则在考‘逻辑或’的本质和短路求值。拿到题先别急着算 5+2,要问自己:这是算术或还是逻辑或?左边非零即真,短路后右边根本不求值,结果就是逻辑真(整数 1)
很多考生把 || 当成算术加法,以为 5||2 等于 7,或者误以为输出应该是 0/1 之外的布尔值。更隐蔽的坑是混淆短路与非短路:若题目是 5||0,右边的 0 会被求值,结果是 5;只有 0||0 才输出 0。命题人常在全为非零时设陷阱,测试你是否真的懂短路机制而非死记结论
GESP 三级「基本运算」模块明确要求掌握逻辑运算符(||、&&、!)及其优先级。命题人卡住的是考生对「逻辑或」的本质认知——它不是算术或(5+2),而是布尔或(5 非零为真,2 非零为真,真或真为真),真值输出为整数 1。