是啊,sizeof和+, -, *, /这些是一类的,呵呵
原帖由 "思一克" 发表:
是个运算符号。大部分情况下在编译时就运算完毕。特殊情况是
代码:
f(int len)
{
char buf[len];
printf("sizeof buf = %d\n", sizeof(buf));
}
main()
{
f(1234);
}
原帖由 "virmin" 发表:
不要误人子弟,这样连编译都通不过滴 */
}
定义数组时,指定数组的长度必须是常量,也就是在编译时能确定的
象这样的写法,根本不可能通过编译,居然还说在运行时确定...
原帖由 "思一克" 发表:
to mq110,
我实验过的,否则那敢说。
linux i386 GCC v3.2.2
变长ARRAY只可以是STACK变量
原帖由 "seeLnd" 发表:
我估计就是编译器自己将代码改掉:
printf("sizeof buf = %d\n", sizeof(buf));
printf("sizeof buf = %d\n", len*sizeof(char));
原帖由 "virmin" 发表:
第一: 标准C是肯定不支持
第二: C++什么C99标准不太清楚, 但不是所有的C++编译器都支持这个标准,起码VC就不支持
所以,象这样的东西,有条件性限制的,最好给个说明,否则还是容易误导
原帖由 "aero" 发表:
啥叫标准C?
C99标准不是标准C?
原帖由 "kernelxu" 发表:
sizeof()是运算符,不是函数。
原帖由 "飞灰橙" 发表:
YPE_T;
sizeof (TYPE_T) = ?
原帖由 "seeLnd" 发表:
有什么奇怪之处?
原帖由 "飞灰橙" 发表:
我在這邊試驗結果
有的編譯器出來是2,
有的是4,
都是編的32位的代碼.
原帖由 SANFXUNIL 于 2005-7-2 18:35 发表
对于变量求大小,就是查符号表的得到的。所以在宏定义中规定了不能使用sizeof运算符,因为那时符号表还没有填入东西。
原帖由 virmin 于 2005-6-10 20:35 发表
狭义上标准C应该指ANSI C吧,以前也没去弄个究竟,只知道ANSI C,连C89也不知道...sigh..
不过C99好象没彻底取代C89的地位,
做C做了这么久,居然还有这么个标准不知道...![]()
原帖由 flw2 于 2005-12-12 11:35 发表
ANSI C 与C89是一样的.除了一个区别.:一个是美国标准,一个是国际标准.
以前一直在想为什么数组的长度要是常量.感觉动态数组是很容易支持的. 就是为数组的定义加一段代码,留出一段栈空间就可以了,结束析构的时候调 ...
原帖由 tanoak 于 2005-6-9 17:32 发表
sizeof究竟是怎样实现的?能够进行那么多种长度计算
原帖由 apollolegend 于 2005-6-10 12:17 发表
sizeof(int)在不同的编译器下会有不同,还是在不同字长的处理器上会有不同。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |