藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 應用編程


    

藍森林 http://www.lslnet.com 2006年6月6日 10:18


奇怪!linux下的數組下標難道不是從0開始的麼?!

[code]
#include <stdio.h>;

int
main (void)
{
                int a[2] = { 2 , 5 };
                printf ("%d %d", a[1] , a[0]);
                return 0;
}
[/code]
[color=green]int a[2] = { 2 , 5 };[/color]
我定義成a[1]={2,5};
警告:
aa.c: In function `main':
aa.c:7: warning: excess elements in array initializer
aa.c:7: warning: (near initialization for `a')
並且運行結果錯誤:a[0]成為了不定值了;

奇怪!linux下的數組下標難道不是從0開始的麼?!

更讓我困惑的是,以上這個小程序;剛開始我在用gcc編譯:
gcc -c aa.c -o aa
執行./aa,什麼結果也沒有;
此時,感到萬分失落,這麼簡單的我都搞不定;我仔細的翻書看了一遍數組和函數printf的用法,覺得沒錯啊!可就是沒有結果!我試著改成這樣:
[code]
#include <stdio.h>;

int
main (void)
{
   //   int a[2] = { 2 , 5 };
   //  printf ("%d %d", a[1] , a[0]);
        printf ("nihao");
      return 0;
}
[/code]
再次編譯,並執行,可還是什麼也沒顯示;不得已,我打開anjuta這個圖形化的工具,編譯並執行,結果出來了!
奇怪!

奇怪!linux下的數組下標難道不是從0開始的麼?!

理解有誤, a[1] 只表示一個數組成員, a[2]才是兩個,

奇怪!linux下的數組下標難道不是從0開始的麼?!

哦哦哦哦

明白了!
可我為什麼用gcc編譯後運行會沒有結果呢?

奇怪!linux下的數組下標難道不是從0開始的麼?!

可我為什麼用gcc編譯後運行會沒有結果呢?


我覺得應該不會的。

奇怪!linux下的數組下標難道不是從0開始的麼?!

結果是有的.被你的下一行的字符蓋住了.
加上\n
就會看到了

奇怪!linux下的數組下標難道不是從0開始的麼?!

hehe!
真的讓shell提示符給蓋住了!
長學問啊!:P

奇怪!linux下的數組下標難道不是從0開始的麼?!

出現錯誤,首先找錯,盡量少懷疑編譯器的毛病,畢竟是經過很多人折騰出來的。呵呵



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com