看板 C_and_CPP 關於我們 聯絡資訊
剛剛試了一下 gcc 的 VLA: int i = -1; int vla[i]; printf( "%d\n", sizeof( vla ) ); // -4 我想我不會特別去用 VLA 這種東西吧。 -- 自High筆記(半荒廢) http://legnaleurc.blogspot.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.205.248.119
VictorTom:哈哈哈~~這個好笑....XD 11/29 01:12
james732:這太扯了吧 XDDD 11/29 01:17
james732:這樣所有用 sizeof(arr)/sizeof(int) 的程式碼都爆了... 11/29 01:18
weiyucsie:有個問題... 如果i是使用者輸入的話.. 應該就... 11/29 01:28
weiyucsie:所以這樣對一個VLA而言,本來就有問題吧? 11/29 01:29
weiyucsie:這樣的作法( sizeof(arr) ) 11/29 01:29
legnaleurc:其實我真正驚訝的地方是,sizeof 應該是在編譯期完成 11/29 01:33
legnaleurc:評算,但是它竟然會跟著變動,而程式也沒當掉 11/29 01:34
legnaleurc:也許只是我運氣好吧,不過我還是認為 VLA 很雞肋 11/29 01:35
twotwoone:既然有支援VLA,那sizeof就是有跟著修改啊... 11/29 01:38
hilorrk:戳到我的點了XDDD 11/29 01:38
Fenikso:c99規定sizeof VLA要在執行期計算... 11/29 01:39
Fenikso:而且你測一個undefined hehavior測出奇怪的結果哪裡不對了 11/29 01:45
legnaleurc:原來有改 ... 我原本預期它會丢一個指標長度 11/29 01:58
legnaleurc:也沒有說不對啦,只是覺得有趣而己 11/29 02:02
weiyucsie:原來VLA的sizeof會在執行期算!! 11/29 13:12