“int(i)=1;”是什么意思?

12

我是C++的新手,我看到了以下用于初始化变量的语法。

int(i)=1;

然后,我使用G++编译器进行了编译,编译器没有给出任何错误或警告。

那么,在C和C ++中,int(i)= 1;是什么意思呢?

我还在C中进行了测试,本以为会出现错误,但它也能正常工作。


1
为什么要添加[tag:c]标签?C和C++是非常不同的语言。 - phuclv
1
@LưuVĩnhPhúc 因为它在 C 中也能正常工作。 - user7620837
@Mahendra 尽管如此,在两种语言中运行的某些东西可能具有非常不同的行为和原因。在这种情况下,没问题,但请记住它们确实是不同的。 - deviantfan
你为什么会期望一个lvalue错误?i是一个lvalue。 - deviantfan
1
@Mahendra 这是非常不同的代码。i 是一个左值,而 foo() 不是。关键的区别并不在于括号(嗯,有点在于。它们是函数调用的原因)。请查阅左值的定义。 - deviantfan
1个回答

15

这基本上是一种奇怪的写作方式

int i = 1;

无需担心。

有时候,在定义中在变量名周围加上括号是必要的(例如指向函数的指针),而在其他情况下也没有禁止使用它们的理由,因此可以允许使用,没有更深层次的原因。
也许作者不喜欢空格(这样的人存在)。


1
“code golfers” 这个词就是你要找的。 - Silvio Mayolo
7
就内容而言, FWiW, int i=1int(i)=1 更简短。 - Mateen Ulhaq
@SilvioMayolo 我更想找一些冒犯性的东西,我不想拼出来... 代码高尔夫没问题,但不适用于工作等场合。 - deviantfan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接