#include<stdio.h>
int main()
{
short a, b, c;
printf("Enter the values of a, b and c: ");
scanf(" %d %d %d ", &a, &b, &c);
if(a<b && a<c)
printf("a is smaller");
else if(b<a && b<c)
printf("b is smaller");
else
printf("c is smaller");
return 0;
}
對於輸入a=10
,b=12
,c=13
,它給出輸出「c is smaller」?短不工作,但詮釋呢?
而當我用int
替換short
時,它會給出正確的輸出。 我也試過%h
,%i
但它輸出相同。
怎麼回事?
這是UB,你是路過'short',而不是'int',即預期'%類型d'格式說明符 – LPs
未定義的行爲未定義。 –
你假設'short'和'int'是相同的寬度嗎? –