标题: C语言宏定义问题 #define char unsigned char定义后 使用char是无符号还是有符号? [打印本页]

作者: 李冬    时间: 2022-11-4 14:32
标题: C语言宏定义问题 #define char unsigned char定义后 使用char是无符号还是有符号?
#define char   unsigned  char
这样定义过后
使用char 是无符号还是有符号

作者: 13205495918    时间: 2022-11-4 17:32
ohohohoh,神奇的写法出现了
作者: 名字不是重点    时间: 2022-11-4 18:06
哈哈。。。
牙齿咬到后脑勺了。。。
左脚踩右脚上天了。
永动机出现了。
作者: 名字不是重点    时间: 2022-11-4 18:08
先试试编译能不能过,再来发贴。。没有试验就没有发言权。
作者: 帅包    时间: 2022-11-4 18:58
大神的问题果然烧脑[em06
  1. #define  char  unsigned  long
  2. int        main (void)
  3. { char a=0;
  4.         a=0x12345678;
  5.         a=a+1;
  6. }
复制代码
上面这段代码是编译可以通过的
  1. //#define  char  unsigned  long
  2. int        main (void)
  3. { char a=0;
  4.         a=0x12345678;
  5.         a=a+1;
  6. }
复制代码
这段代码编译就要报警告了main.c(6): warning:  #69-D: integer conversion resulted in truncation

说明宏定义是有效的,真的可以把unsigned char定义成有符号的char,各位如果不怕被接盘者打死,以后编程就可以这么干!!!!!!!!!!!!!!!!!!

作者: 名字不是重点    时间: 2022-11-4 19:47
帅包 发表于 2022-11-4 18:58
大神的问题果然烧脑[em06上面这段代码是编译可以通过的
这段代码编译就要报警告了main.c(6): warnin ...

#define char   unsigned  char呢?
作者: 17303806905    时间: 2022-11-4 21:30
这样定义不符合语法规则,编译通不过
作者: 温xyz    时间: 2022-11-4 22:28
char是关键词,你不能用关键词代替另一个关键词。你可以
#define uchar   unsigned  char
作者: cnos    时间: 2022-11-4 23:44
每天一个挖坑小技巧?
作者:     时间: 2022-11-5 08:34
#define char   unsigned  char

int main()
{
    char a = 0;
    a = 0xff;
    a = a + 1;
    printf_s("a: %d\n", a);
    system("pause");
}

输出 a为0;VS2019下编译通过
作者: matlab?    时间: 2022-11-7 10:12
所以到底是有符号还是无符号啊???




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1