| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2125 人关注过本帖
标题:sizeof用法!
只看楼主 加入收藏
tomic
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2005-11-17
收藏
得分:0 

我用vc能编译的,的到4

2006-04-06 20:34
liyongjun
Rank: 1
等 级:新手上路
帖 子:101
专家分:0
注 册:2006-4-5
收藏
得分:0 

#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的正确语法。改成这样就能编译,你应该说清楚点你想做什么


GOOD GOOD STUDY DAY DAY UP!!
2006-04-06 21:15
ChenMo
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:481
专家分:10
注 册:2004-4-8
收藏
得分:0 
以下是引用zhangjuan在2006-4-6 18:53:00的发言:
byte = sizeof(int) (*p) 会被编译器认为:
sizeof(int) 为一个整体,得2,
原表达式就变为 byte = 2(*p);
2(*p) 便是个语法错误的语句,
假若忽略此错误的存在性(如标识符、声明及定义等错误),认为其是正确的,
那么 2(*p) 即 2(10.5) 将看做一个函数的调用,
TC 找不到此“函数”。
5楼的解释我没有看明白,能再具体一点吗?

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


欢迎加入 MVC 技术讨论群(新群:90093426)
2006-04-06 21:49
ChenMo
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:481
专家分:10
注 册:2004-4-8
收藏
得分:0 
VC6.0 中 int 类型是 4 字节尺寸。

欢迎加入 MVC 技术讨论群(新群:90093426)
2006-04-06 21:53
仁者无敌
Rank: 1
等 级:新手上路
帖 子:199
专家分:0
注 册:2006-3-5
收藏
得分:0 
我这是byte=2

I am a programmer !
2006-04-06 21:59
柔美
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-4-5
收藏
得分:0 

谢谢,谢谢


MSN::zhengmeier@ Email::chentianqiao06@ TM::619969970
2006-04-07 00:37
hpdell
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-4-2
收藏
得分:0 
好!!!!!!!!!!!!!
2010-06-17 14:03
快速回复:sizeof用法!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020683 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved