我用vc能编译的,的到4
#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;
} 按照sizeof的正确语法。改成这样就能编译,你应该说清楚点你想做什么
程序应该就是语法错误,而且是非常容易修改的小错误。
而不能通过编译的原因可由出错信息得知:
TC 将其视为一个函数调用;
本人上述推测其错误的来源,目的在于对此错误进行臆测,无他,
而这句“假若忽略此错误的存在性(如标识符、声明及定义等错误)……”,在于说明,sizeof 操作符是在编译时求值,是以 sizeof(int)(*p) 代替 2(*p),而此句并非定义及说明,恰好是一个调用,因此,在尝试编译 2(*p) 时发生错误,找不到 2(*p) 这个函数,所以报错为函数为定义,这个 2(*p) 的函数名2本来就不是合法的标识符。
当然,真正的错误并非因为它确实是一个函数调用,而是TC判其为一个函数调用;