如果将 int 作为参数传递给接受字节(字符)的方法,C/C++ 会如何处理? int 会被截断吗?或者是其他东西?
例如:
void method1()
{
int i = //some int;
method2(i);
}
void method2(byte b)
{
//Do something
}
int 如何“转换”为字节(字符)?它会被截断吗?
If byte
代表char
类型,行为将取决于是否char
在您的平台上已签名或未签名。
If char
未签名,原件int
值减少到unsigned char
范围模数UCHAR_MAX+1
。值在[0, UCHAR_MAX]
范围被保留。 C语言规范将这个过程描述为
...通过在新类型可以表示的最大值上反复加或减1来转换该值,直到该值在新类型的范围内。
If char
类型有符号,然后值在[SCHAR_MIN, SCHAR_MAX]
范围被保留,而任何超出该范围的值都会以某种实现定义的方式进行转换。 (C 语言还明确允许在这种情况下引发实现定义的信号。)没有通用的答案。请参阅您的平台的文档。或者,更好的是,编写不依赖于任何特定转换行为的代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)