gpt4 book ai didi

关于 C 中的短数据类型格式说明符的困惑

转载 作者:行者123 更新时间:2023-12-01 13:50:03 25 4
gpt4 key购买 nike

考虑以下程序:

#include <stdio.h>
int main()
{
short a=9;
//printf("%hi\n",a);
printf("%d",a); // LINE 6
}

根据 this短类型(有符号)的格式说明符是 %hishort 类型变量在对其执行任何操作之前总是自动提升为 int 吗?是未定义的行为,如果我在这个程序中使用 %d 格式说明符来打印变量的值?我使用 gcc -Wall -Wextra -WFormat 选项编译它,但仍然编译器没有显示任何警告。为什么?

最佳答案

printf("%hi\n", a);

a 根据可变参数函数的默认参数提升规则提升为 int

无论如何,当您使用 h 说明符时,允许实现期望 int 值在 SHRT_MINSHRT_MAX 限制。在边界外传递值是未定义的行为。

当然 printf("%i\n", a); 也是有效的,因为 aint 提升所以使用%hi 转换规范不是很常见。

关于关于 C 中的短数据类型格式说明符的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32528580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com