以下是书上的一题 :分析程序存在的错误。
答案:寄存器变量不能用“&”,运算符,因此要将寄存器变量改为非寄存器变量,
即定义为:int x;
void main()
{
register int x;
x=100;
printf("%d\n",&x);
}
//此处&是什么意思?再帮我分析一下上面答案是什么意思?我在程序前面加了#include <stdio.h>后试了一下程序加不加register都是输出1244996,不知为什么?
好像加不加register也没变化?
以下是书上的一题 :分析程序存在的错误。
答案:寄存器变量不能用“&”,运算符,因此要将寄存器变量改为非寄存器变量,
即定义为:int x;
void main()
{
register int x;
x=100;
printf("%d\n",&x);
}
//此处&是什么意思?再帮我分析一下上面答案是什么意思?我在程序前面加了#include <stdio.h>后试了一下程序加不加register都是输出1244996,不知为什么?
好像加不加register也没变化?
在C++里面,&是引用调用,不是C语言中的scanf存址。
你现在打印的应该是x的地址,把&去掉就可以正常打印了。
因为你打印出来的是存方X的地址。所以不是X的值。&这表示取地址。是16进制的。
加了&后 输出的就是寄存器的地址了 而不是它保存的值了……