#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);
}
Run Code Online (Sandbox Code Playgroud)
TOT的值为5,但if条件失败..为什么?
因为在工作中有"通常的算术转换" if.
所述sizeof操作者返回一个无符号类型...并d转换为无使其比在元件的数量更大arr.
尝试
#define TOT (int)(sizeof(arr)/sizeof(arr[0]))
Run Code Online (Sandbox Code Playgroud)
要么
if(d<= (int)TOT){
Run Code Online (Sandbox Code Playgroud)