C++的隐藏特性?

13 浏览
0 Comments

C++的隐藏特性?

对于“隐藏功能”问题,没某些情况下C++吗?我想我可以提一下。C++有哪些隐藏功能?

0
0 Comments

C++程序员倾向于避免使用指针,因为指针可能引入错误。

但是,我见过的最酷的C++是什么?模拟文字。

我们避免使用指针是因为有错误?指针基本上是动态C++编码的一切!

模拟文字对于混淆C++竞赛项目非常有用,尤其是ASCII艺术类型。

隐藏的C++功能:指针算术。C++程序员倾向于避免使用指针,因为指针可能引入错误。但实际上,指针是动态C++编码中的一切。此外,模拟文字是一种很酷的C++功能,尤其适用于混淆C++竞赛项目,尤其是ASCII艺术类型。模拟文字是一种让C++代码更具创意和艺术性的方式。

0
0 Comments

隐藏功能是指在C++源代码中插入URI而不会出现错误。例如:

void foo() {
    http://stackoverflow.com/
    int bar = 4;
    ...
}

但是每个函数只能插入一个URI,我怀疑是这样的?:)

这是一个bug吗?它的用途是什么?我尝试了一下,确实在编译时没有出错;但是我得到了一个警告:warning C4102: 'http' : unreferenced label

只是不要尝试在一个源文件中插入多个URI 😛

:以http开头的URI后跟一个冒号会变成一个“标签”,您可以在后面的goto语句中使用该标签。您的编译器会发出此警告,因为在上面的示例中没有在任何goto语句中使用它。

只要它们具有不同的协议,您可以添加多个URI!ftp.microsoft.com gopher://aerv.nl/1 等等...

:一个标识符后跟一个冒号是一个标签(用于goto语句,C++确实有这个功能)。两个斜杠后的任何内容都是注释。因此,对于http://stackoverflow.comhttp是一个标签(理论上您可以写goto http;),而//stackoverflow.com只是一个行尾注释。这两种情况在C++中都是合法的,所以这种结构可以编译通过。当然,它并不具有任何实用性。

如果您打开了警告作为错误的选项,它将无法构建,至少在VS2005中是这样的。

您可以通过添加一个goto http;来修复这个问题;-)

不幸的是,goto http;并不会打开URL。:(

等等,Java也支持goto吗?

实际上是的,有点类似。参考stackoverflow.com/a/2545160/65977

0
0 Comments

C++隐藏功能是什么?

C++程序员大多熟悉三元运算符:

x = (y < 0) ? 10 : 20;

然而,他们并没有意识到它可以用作lvalue:

(a == 0 ? a : b) = 1;

这是上述代码的简写形式:

if (a == 0)
    a = 1;
else
    b = 1;

使用时要小心 🙂

非常有趣。但是我可以看出这会使一些代码难以阅读。

你必须移动你的闭合括号:"(a == 0 ? a : b) = 1",否则它会编译成"a == 0 ? a : (b = 1)"。注意,"a == 0"周围的括号是不必要的。

糟糕。(a == 0 ? a : b) = (y < 0 ? 10 : 20);

很奇怪这在C语言中没有。像单行注释(//)这样的东西被倒退了,而且这肯定不会破坏任何代码。我觉得这也可能很有用。唉。

(b ? trueCount : falseCount)++

还有其他语言允许这样做吗?

我通常不使用三元运算符,因为它使代码难以阅读。

不知道这是否只适用于GCC,但我很惊讶地发现这也起作用:(value ? function1 : function2)()

Burt-Brown:不,如果它们具有相同的类型(即没有默认参数),那么这应该在任何地方都可以工作。function1function2会被隐式转换为函数指针,然后结果会被隐式转换回来。

C++隐藏功能的原因是因为很多C++程序员熟悉并使用三元运算符,但他们并不知道它可以用作lvalue。这个隐藏功能可以简化代码,使得在特定条件下一行代码就可以完成赋值操作。然而,由于可读性较差,使用时需要小心。

解决方法是将闭合括号移动到正确的位置,以确保代码能够按预期工作。此外,注意在使用三元运算符作为lvalue时,不需要使用额外的括号。

虽然一些人认为这个隐藏功能很有趣并且可能会有用,但也有人认为它会使代码难以阅读。因此,是否使用这个隐藏功能取决于个人的偏好和项目的要求。

至于其他语言是否允许类似的功能,这并没有在讨论中得到明确的回答。某些情况下了在C语言中缺少这个功能,并认为它应该被添加进去。

C++隐藏功能的出现是因为三元运算符可以用作lvalue,但许多程序员并不知道这个特性。解决方法是将闭合括号移动到正确的位置,并注意不需要使用额外的括号。此功能可能在某些情况下有用,但也可能使代码难以阅读,因此使用时需要谨慎。其他语言是否允许类似的功能尚未确定。

0