簡體   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