C中(int)-1和(-1)之间的区别是什么?

C中(int)-1和(-1)之间的区别是什么?,c,C,我想知道以下情况是否相同: #define IDEFAULT (-1) 及 我想知道以下情况是否相同: 两者都是相同的,因为它们会产生语法错误 您似乎试图在C中使用宏,因此正确的语法是: #define macro-name char-sequence 所以我会写一个例子: #define myMacro -1 其中myMacro将等于-1。如果我用括号括住-1,它不会有什么区别。阅读更多关于它的文章 PS:但是,语法错误并不相同: main.c:3:9: error: expected

我想知道以下情况是否相同:

#define IDEFAULT (-1)

我想知道以下情况是否相同:

两者都是相同的,因为它们会产生语法错误

您似乎试图在C
中使用宏,因此正确的语法是:

#define macro-name char-sequence
所以我会写一个例子:

#define myMacro -1
其中
myMacro
将等于-1。如果我用括号括住-1,它不会有什么区别。阅读更多关于它的文章


PS:但是,语法错误并不相同:

main.c:3:9: error: expected declaration specifiers or '...' before '-' token
    3 | define (-1)
      |         ^


我投票以离题的方式结束这个问题,因为我认为比较和对比可能出现的语法错误的无限组合没有多大价值。这是为了什么?你是通过反复试验来学习的吗?是的,两者都是一样的<代码>-1的类型为
int
。然而,可能有一些棘手的用法。例如,如果您有一个名为
foo
的函数,那么
fooidefault将导致法律调用
foo(-1),在第一种情况下,但非法
foo(int)-1第二种情况下的东西。我投票结束这个问题,因为它不太可能对未来的读者有用。这两个是一样的。它们定义了一个名为
IDEFAULT
的宏,其值为
-1
。如果您改为这样做:
#定义IDEFAULT-1
,那么它会略有不同;如果有人用上述定义写了:
5idefault
,它将是
4
。对于这两个定义,这将是一个语法错误(在本例中,这是很好的)。
main.c:3:9: error: expected declaration specifiers or '...' before '-' token
    3 | define (-1)
      |         ^
main.c:3:1: warning: return type defaults to 'int' [-Wimplicit-int]
    3 | define (int) -1
      | ^~~~~~
main.c: In function 'define':
main.c:3:14: error: expected declaration specifiers before '-' token
    3 | define (int) -1
      |              ^
main.c:3:9: error: parameter name omitted
    3 | define (int) -1
      |         ^~~
main.c:8: error: expected '{' at end of input
    8 | }
      |