#include <stdio.h>
int arr[] = {1, 2,3,4,5};
#define TOT (sizeof(arr)/sizeof(arr[0]))
int main()
{
int d = -1, x = 0;
if(d<= TOT){
x = arr[4];
printf("%d", TOT);
}
printf("%d", TOT);
}
TOT的值爲5,但if條件失敗......爲什麼?使用sizeof(數組)的宏沒有給出預期的輸出
你有[UB](HTTP ://c2.com/cgi/wiki?UndefinedBehavior)在'printf's中:你說你會傳遞一個'int',但'TOT'的類型不匹配。 – pmg
@pmg實際上C編譯器是否支持%zd語法?看起來甚至沒有GCC做到這一點,我試着用-std = c99 -pedantic並打印出「zd」。 – Lundin
@pmg我想我有一個太過舊版本的GCC ... – Lundin