c - short 或 char(整数)的字面量

标签 c

是否有文字语法来编写 charshort ?例如:

  • 4 --> 国际
  • 4L --> 长
  • 4LL --> 长长
  • 4C ?
  • 4小时?

  • 或者,您是否需要将其转换为文字符号,例如:
  • (char) 4 --> 字符
  • (short) 4 --> 短

  • 注意:即使我写成 'a' ,它仍然将其识别为 int (至少当我在 VS Code 中检查它时)。

    最佳答案

    短类型(比 int 窄的类型)没有后缀,您也不需要它们。
    在预处理器条件之外,后缀可以完全表示为强制转换或更一般的强制转换和三元运算符( 0xfffffffffU 不等于 (unsigned)0xfffffffff ,但在 32 位平台上等于 (1?0xfffffffff:0u) unsigned 秒)。
    在预处理器条件中,强制转换不起作用,因此您至少需要 U如果您需要无符号语义,请在此处添加后缀。我猜,其他后缀只是为了方便需要在 C 和预处理器条件中使用宏时,尽管诸如 ((type)+42) 之类的东西。也可以在这种情况下使用(依赖于在预处理器条件中扩展为 0 的关键字)。
    Eric Pospitschil已经指出,预处理算法是在 intmax_t 中完成的。/uintmax_t所以你不需要像在 C 中那样扩展常量来防止某些未定义行为的实例。

    关于c - short 或 char(整数)的字面量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65974417/

    相关文章:

    c - 如何获取空格分隔的数组值并将其存储在数组中?示例 : input in form 10 20 30 ouput:a[0]=10 a[2]=20 a[3]=30

    C - 检查文件中的错误

    c - 从类型 'array[256]' 分配给类型 'array *' 时的类型不兼容

    c - 音频样本生成器多线程 OSX

    c - 如何传递枚举名称直接切换,vc++ mfc

    c - 我的代码中的链表和段错误

    c - SYSCALL() 在 Linux 中在哪里实现?

    c - 免费异常(exception)c

    c - GCC 程序未定义对函数的引用(多个文件夹)

    c - 使用指向指针的指针时出现段错误