繁体   English   中英

C ++中数学计算中的内部时间变量

[英]Internal temporal variable in mathematic calculation in C++

以下示例用于说明我的问题:

#include <iostream>
#include <string>

int main()
{

  signed char p;
  signed char temp=100;
  signed char t=4;
  p = (temp+temp+temp+temp)/t;
  std::cout << "Hello, " << int(p)<< "!\n";
}

在上面的代码中,变量p被定义为四个singed char变量的平均值。 但是,signed char变量(temp + temp + temp + temp)的总和将大于signed char的范围。 所以我的问题是C ++如何处理这种情况。

但是,signed char变量(temp + temp + temp + temp)的总和将大于signed char的范围。

这无关紧要,因为integral promotion会将char提升为int 细节可以在这里找到。 因此,操作将在int类型上完成,您将获得预期的结果。

没有任何事情发生,因为整体推广

小整数类型(例如char)的Prvalues可以转换为更大整数类型(例如int)的prvalues。 特别是,算术运算符不接受小于int的类型作为参数,并且在左值到右值转换后自动应用整数促销(如果适用)。 此转换始终保留该值。

(temp+temp+temp+temp)将返回一个整数。

(temp+temp+temp+temp)/t将在char范围内。

所以p == temp

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM