【发布时间】:2021-09-12 14:57:38
【问题描述】:
#include <iostream>
using namespace std;
int main(){
int f = 1;
int s = 500;
char d = 256; // This line gives me overflow error
char c = s; // But it does not.
cout << d << endl;
cout << c << endl;
return 0;
}
为什么我可以将大于 255 的 int 分配给 char,但我不能直接分配大于 255 的整数文字?
直接赋值文字值与使用变量赋值有何不同?
【问题讨论】:
-
在什么情况下无法将 256 分配给 d?
-
char d=256可以在编译时诊断,char c=s将是运行时问题(因为s不是const(expr))。 -
您使用的是哪个编译器,您的编译器标志是什么?您从编译器中得到了哪些错误和警告?请添加到您的问题陈述中。我预计会收到一些警告,表明
char声明存在问题。 -
在
char超过 8 位(或超过 9 位,如果被视为有符号)的平台上,int的值可能超过 255 到 char。否则会出现bit slicing。
标签: c++ char integer c++14 overflow