sizeof用法!
谁知道下面的程序为什么不能编译:谢谢!
#include<stdio.h>
#include<conio.h>
int main(void)
{
int byte;
float *p,i=10.5;
p=&i;
byte=sizeof(int)(*p);
printf("byte=%d\n",byte);
getch();
return 0;
}
谁知道下面的程序为什么不能编译:谢谢!
#include<stdio.h>
#include<conio.h>
int main(void)
{
int byte;
float *p,i=10.5;
p=&i;
byte=sizeof((int)(*p)); /*此处是个语法错误,应该加括号,结果:转换为 int 类型是 2 字节*/
printf("byte=%d\n",byte);
getch();
return 0;
}
TC2.1下报告的错误是:
调用未定义的函数。
这说明:
byte = sizeof(int) (*p) 会被编译器认为:
sizeof(int) 为一个整体,得2,
原表达式就变为 byte = 2(*p);
2(*p) 便是个语法错误的语句,
假若忽略此错误的存在性(如标识符、声明及定义等错误),认为其是正确的,
那么 2(*p) 即 2(10.5) 将看做一个函数的调用,
TC 找不到此“函数”。
—— 这是错误的。
让编译器知道 (int)(*p) 是一个整体,须以括号括起。
[此贴子已经被作者于2006-4-6 18:14:35编辑过]