#include <iostream>
using namespace std;
int main()
{
struct information
{
string name;
string bloodgroup;
int mobno;
};
information person1={"Ali Hamza","O-",434233434};
information person2={"Akram Ali","B",034};
cout << endl << person1.name << endl;
cout << person1.bloodgroup << endl << person1.mobno<< endl;
cout << endl << person2.name << endl << person2.bloodgroup << endl << person2.mobno<<endl;
int num = 09;
cout << num;
return 0;
}
我想知道当我在八进制常量9和8中看到无效数字之类的错误时。如果零是第一个数字,它会为#34; mobno&#34;(在结构中)的值打印错误的值,但它给出了在程序结束时将零用作num的第一个数字时出错。是否有人会为我解释?
答案 0 :(得分:4)
在C / C ++中以0开始整数文字意味着您打算在octal或base-8中解释它。
因此,例如,数字'034'将被解释为3 * 8 ^ 1 + 4 * 8 ^ 0 = 3 * 8 + 4 * 1 = 28.因此它等于'28'。
整数文字'09'无效,因为'9'不是八进制数字。
答案 1 :(得分:1)
<强> 2.14.2 整数文字
整数文字可以有一个前缀,用于指定其基数和a 后缀,指定其类型。 [...]八进制整数文字(基数为8)以数字0开头 并由一系列八进制数字组成。
以八进制计数将是:
01, 02, 03, 04, 05, 06, 07, 10
因此,编译器会接受8
或9
作为八进制数的一部分。