gpt4 book ai didi

c++ - if 语句中运算符优先级的解释

转载 作者:太空宇宙 更新时间:2023-11-04 16:26:59 26 4
gpt4 key购买 nike

示例代码:

#include <iostream>

int main()
{
if(int a = std::cin.get() && a == 'a')
{
std::cout << "True" << std::endl;
}
}

问题:

当我编译这段代码时,visual studio 给了我一个很好的警告:warning C4700: uninitialized local variable 'a' used。所以我明白 a 是未初始化的。但是,我想完全了解表达式的计算方式。上面的 if 语句是否等同于 if(int a && a == 'a') { a = std::cin.get(); }?有人可以解释到底发生了什么吗?

最佳答案

与运算符&& 的优先级高于赋值运算符=。所以换句话说,你的语句是这样执行的:

if (int a = (std::cin.get() && a == 'a'))

你真的想使用显式括号:

int a;
if ((a = std::cin.get()) && a == 'a')

更好的是,编写清晰的代码:

int a = std::cin.get();
if (a == 'a')

:-)

关于c++ - if 语句中运算符优先级的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10710490/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com