int+i=16,输出结果为i=16=020=0X10,则输出语句为什么?
1个回答
展开全部
这个题目仍然有歧义,因为 int+i=16 这条语句仍然存在未定义行为。
假设 int 是一个整型变量,i 是一个整型指针,可以通过以下两种方式执行这条语句:
int+i=16 被解析为将 int 的值加上 i 的值等于 16,也就是说,将 i 指向的内存地址加上 int 的值等于 16。此时,由于指针 i 没有初始化,因此它指向的内存地址是不确定的,这时的输出语句就没有确定的答案;
如果 int+i=16 被解析为将 int 与指针 i 相加赋值给 int,也就是说,将 int 的值加上 i 的地址值赋值给 int。此时,int 的值会变为地址 i 的值加上 int 的值,也就是 i 指针所指向的位置再加上 int 的值。如果 i 地址指向的位置在内存中的十六进制表示是 020,那么 i 指针的值也可以写成 0x020,因此,输出语句可以是 cout<<"i="<<i<<endl;,结果为 i=020(八进制)=16(十进制)=0x10(十六进制)。
综上所述,不确定的部分在于 int+i=16 这条语句的具体含义,因此输出语句也没有明确的答案。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询