gpt4 book ai didi

c++ - 为什么相同大小的函数参数中的隐式转换不会引发警告?

转载 作者:搜寻专家 更新时间:2023-10-31 02:11:18 24 4
gpt4 key购买 nike

看那个例子:

//test.cpp
#include <iostream>
void test(unsigned int i, int j) {
std::cout << i << " " << j << std::endl;
}
int main() {
test(-1, -1);
int x = -1;
test(x,x);
return 0;
}

与:

$ g++ -Wall -Wextra -Wpedantic test.cpp:
4294967295 -1
4294967295 -1

为什么 gcc 会放过这一点?是否有检测此类隐式转换的选项?

干杯

最佳答案

之前已经回答过了。原因之一是因为 C 允许它,而 c++ 意味着向后兼容。一些编译器会发出警告,尽管我在 gcc 5.2 上进行了测试,但它没有打开该警告的选项。

参见:Why does C++ allows implicit conversion from int to unsigned int?

#

刚刚从您需要添加 -Wsign-conversion 标志的其他答案之一中找到。似乎 -Wall 应该这样做,但没有。

关于c++ - 为什么相同大小的函数参数中的隐式转换不会引发警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43822550/

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