这是我程序中的一段代码。我正在使用int8_t
数据类型,并且在输入/输出方面遇到了一些问题。显然,int8_t
在程序中使用需要为编译器-std=c++11
设置标志。g++
我这样做了,但是存在运行时错误。这是我的代码:
#include <iostream>
#include <cstdint>
using std::cout;
using std::cin;
using std::endl;
int main() {
int8_t number;
cout << "Enter a number [1-100]: ";
cin >> number;
cout << "You entered: " << number << endl;
cout << number << " / 10 = " << (number / 10) << endl;
return 0;
}
这是程序的输出:
$ ./a.out
Enter a number [1-100]: 95
You entered: 9
9 / 10 = 5
是$
shell 提示符。无论如何,似乎只有第一个数字是从输入流中读取的。即便如此,整数除法9 / 10
应该返回0
,而不是5
。该程序旨在执行95 / 10
并返回9
. 理论上,这个程序应该可以工作,但显然,即使是除法运算符也是有问题的。我应该注意,使用int
而不是int8_t
使程序按预期工作。我怀疑在这种情况下,有人会告诉我使用int
数据类型并处理它。但我们是软件工程师!我想知道如果int8_t
数据类型本身就有缺陷。为什么它不能接受正确的用户输入,而且还破坏了除法运算符?!任何值得使用的编程语言都必须没有这样的缺陷。而且我认为 C++ 足够流行,以至于最终有人意识到它int8_t
在某种意义上是有缺陷的。这是我需要知道的复杂性。