- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
std::cout << (abs(b - c) < a) && a < b + c ? 1 : 0;
我想检查给定值是否可以创建三角形。我收到警告:
second operand of conditional expression has no effect [-Wunused-value]
third operand of conditional expression has no effect [-Wunused-value]
怎么了?
最佳答案
您的代码转换为:
((std::cout << (abs(b - c) < a)) && a < b + c) ? 1 : 0;
首先, operator<<
有更高的operator precedence比operator&&
.
只有abs(b - c) < a
的值将被打印并且 (a < b + c ? 1 : 0)
部分将与 std::ostream::operator bool
的返回值一起进行 AND 运算.
但警告是关于 1
和 0
没有被分配给任何东西也没有任何副作用,因为 &&
在三元条件 (?:
) 之前。
正确的代码是:
std::cout << (abs(b - c) < a && a < b + c ? 1 : 0);
// same as std::cout << ((abs(b - c) < a && a < b + c) ? 1 : 0);
或
std::cout << (abs(b - c) < a && (a < b + c ? 1 : 0));
事实上,它们是等价的(除了一个用 operator<<
调用 bool
而另一个用 int
调用),不需要三元运算符:
std::cout << (abs(b - c) < a && a < b + c);
关于c++ - 警告 : second/third operand of conditional has no effect [-Wunused-value],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35685338/
我正在学校作业中实现单例设计模式,这是我的类头文件: class Scheduler { public: static Scheduler * instance(); ~Schedul
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
最近我开始用C++编程了(我是Java出身的,有点零钱哈哈)。在 Windows 下一切正常。问题是我切换到 Linux,这就是我遇到编译器问题的地方。通常当你声明一个变量但没有被使用时,编译器会显示
我是 c++ 新手。 我想忽略警告 -Wunused-result 我猜是因为 -Wall 标志而弹出的。 我在网上搜索了一下,发现这是我可以通过声明一个pragma 来忽略它。我对 pragma 了
我有以下代码,在使用 gcc-4.6 编译时我收到警告: warning: variable ‘status’ set but not used [-Wunused-but-set-variable]
我将Wunused-parameter用于我的项目,但我想让它忽略3rd Party header (特定目录中的 header )。有什么办法可以用cmake设置它吗? 我目前正在像这样设置编译器选
我使用的是 GCC 版本 8.2在几段代码中,我使用了小函数。我对每一项功能都进行了测试(即 Unity 框架测试)。测试被定义为 #define 宏,测试非常具体的事情。例如,如果一个数字是正数
以下代码生成一个警告,指出未使用 temp(这是真的): #include int f() { return 5; } int main() { if(const int& temp = f
我只是花了一些时间来找出为什么可变集没有正确地与自身相交与另一组,使用 [someMutableSet intersectsSet:anotherSet]; // not the best i
我正在使用以下命令构建 C++14。 g++ -std=c++14 -O2 -Wall -pedantic -pthread main.cpp && ./a.out 如何将 -Wunused-vari
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我试图通过使用 GCC 的 -Wunused-function 标志在我的代码库中找到未使用的函数。 如我所料,使用 gcc -Wall -Wunused-function main.cpp 编译以下
这是我的代码: #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-variable" //__attribute
我使用 Ideone.com 编译了下面的代码,弹出了以下警告。 rtctimer.c: In function 'rtctimer_next_tick': rtctimer.c:87.7: warn
我已经搜索并没有真正找到并理解这个错误。奇怪的是,我只得到 c、d、e 的错误,而不是 a 和 b 或它们所有的错误。 程序是关于双链表的。 当我编译时会发生这种情况: gcc -Wall -g -c
我正在尝试使用Ubuntu将Cross编译为Android内核。 成功设置menuconfig后,并使用以下选项进行编译: make ARCH=arm CROSS_COMPILE="arm-bravo
所以我试图找出 while 循环和大多数 if 语句,所以我尝试制作这个小游戏,其中你有一定的生命值,怪物也有,只要你们都有超过 0 的生命值,循环就会运行,所以每个循环怪物都会对你造成 50 点伤害
main.cpp #include #include #include "steganography.h" // call steganography class const int arrSi
我有一个使用 SDL 的 C++ 项目。 我在编译时遇到这个错误,我不知道如何解决。 它说: Source/Classes/game.cpp:15:15: advarsel(this means 'w
我已经盯着它看了很久,但不明白为什么它会在 for 循环语句中给我一个警告。 //looks for a certain account by name in the provided list, r
我是一名优秀的程序员,十分优秀!