如果在 C 中将 int 传递给 byte 参数会发生什么?

2023-12-08

如果将 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(使用前将#替换为@)

如果在 C 中将 int 传递给 byte 参数会发生什么? 的相关文章

随机推荐