#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'是相同的宽度吗? –