当将整数传递给具有 char 参数的函数时,c++ 不给出警告或错误
c++ give no warning or error when a integer is passed to a function that has char arguments
当将整数传递给采用 char 参数的函数时,为什么 c++ 不给出警告或错误。
void test(char a) {
std::cout << a;
}
test(1);
这样做会出现意想不到的行为(即打印 ?)。但我希望这是一个错误,或者至少是一个编译警告,因为正在发生某种转换。为什么这没有发生?
我不是很确定为什么 c++
允许隐式转换在这里,也许是因为它有利于处理原始内存。
为什么会出现意外行为
1
是有效的 control code,例如 '[=13=]'
或 '\n'
而您应该使用 '1'
(或 49
,假定 ASCII 或兼容格式)
如果不适合,编译器会发出警告。
void test(char c);
void F(){test(1);} // OK
void G(){test(10000);} // warning
void H(int v){test(v);} // need -Wconversion
当将整数传递给采用 char 参数的函数时,为什么 c++ 不给出警告或错误。
void test(char a) {
std::cout << a;
}
test(1);
这样做会出现意想不到的行为(即打印 ?)。但我希望这是一个错误,或者至少是一个编译警告,因为正在发生某种转换。为什么这没有发生?
我不是很确定为什么 c++
允许隐式转换在这里,也许是因为它有利于处理原始内存。
为什么会出现意外行为
1
是有效的 control code,例如 '[=13=]'
或 '\n'
而您应该使用 '1'
(或 49
,假定 ASCII 或兼容格式)
如果不适合,编译器会发出警告。
void test(char c);
void F(){test(1);} // OK
void G(){test(10000);} // warning
void H(int v){test(v);} // need -Wconversion