给定一个程序
#include <iostream>
using namespace std;
int main()
{
const size_t DoW = 7;
const unsigned int DAYS_OF_WEEK = static_cast<unsigned int> (DoW);
unsigned int dayOfFirstDay = 0;
unsigned int _firstDayOfWeek = 1;
unsigned int diff = (DAYS_OF_WEEK+ (dayOfFirstDay - _firstDayOfWeek) ) % DAYS_OF_WEEK;
cout << "diff = (" << DAYS_OF_WEEK << " + (" << dayOfFirstDay << " - " << _firstDayOfWeek << ")) %" << DAYS_OF_WEEK
<< " = " << diff << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该程序的输出是
diff = (7 + (0 - 1)) %7 = 6
Run Code Online (Sandbox Code Playgroud)
这是预期的。但是修改后的程序没有static_cast
diff = (7 + (0 - 1)) %7 = 6
Run Code Online (Sandbox Code Playgroud)
产出
diff = (7 + (0 - 1)) %7 = 3
Run Code Online (Sandbox Code Playgroud)
这是意料之中的。为什么?
(两个程序都是g++在 64 位 Ubuntu 上用9.3.0编译的)
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |