代码1
以下代码:
#include <iostream>
using namespace std;
int main(){
uint8_t a = 0101;
int b = (int)(a);
cout<<b<<endl;
}
结果输出:
代码2
如果改为:
#include <iostream>
using namespace std;
int main(){
uint8_t a = 101;
int b = (int)(a);
cout<<b<<endl;
}
结果:
代码3
发现,就算是int a = 0101; 还是八进制
原因:
在C++中,当你使用数字字面量时,如果以"0"开头,那么它将被视为八进制数。因此,当你写下uint8_t aa = 0101;
时,0101会被解释为八进制的101,而不是十进制的101。八进制数101转换为十进制是65,这就是为什么你得到的输出是65。
如果你想要表示十进制的101,应该直接写成uint8_t aa = 101;
,这样就不会产生混淆,输出也会是101。