用户是否有办法在C或C++中输入二进制数字?
如果我们写这样的东西
int a = 0b1010;
std::cout << a << std::endl然后输出为10 (当使用适当的编译器扩展时)。
但当我们试着写
int n;
std::cin >> n;
int t = 0bn;它给了我们一个错误,所以有人能建议我们如何直接读取二进制数字作为输入而不是使用字符串来存储输入呢?
发布于 2014-08-22 07:23:08
这里有点混乱,让我们把它弄清楚。
0b1010是一个整数字面值,是一个用基2写的常数,编译时整数值。同样,0xA在基16中是文字,10在基10中。所有这些都是指相同的整数,这只是告诉编译器您指的是哪个数字的另一种方式。在运行时,在内存中,这个整数总是表示为一个基-2数字.std::cout << a;获取a的整数值,并输出其字符串表示形式。默认情况下,它在基10中输出它,但是您可以使用std::hex修饰符让它在基16中输出。没有预定义的修饰符要在二进制中打印。所以你需要自己去做(或者用谷歌搜索,这是一个常见的问题)。0b只用于定义整数字面值。它是而不是运行时操作符。回想一下,所有的ints都表示为内存中的基2数字。从机器的角度来看,其他基础不存在,int是int,所以没有什么可转换的。如果需要从字符串中读取二进制数字,则需要将反向代码滚到打印它的操作(std::cin >> n假设输入是一个基数10的数字,因此如果输入实际上位于基2中,则读取错误的数字)。https://stackoverflow.com/questions/25441364
复制相似问题