我使用三元运算符编写了绝对函数,如下所示
int abs(int a) {
a >=0 ? return a : return -a;
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息
../src/templates.cpp: In function ‘int abs(int)’:
../src/templates.cpp:4: error: expected primary-expression before ‘return’
../src/templates.cpp:4: error: expected ‘:’ before ‘return’
../src/templates.cpp:4: error: expected primary-expression before ‘return’
../src/templates.cpp:4: error: expected ‘;’ before ‘return’
../src/templates.cpp:4: error: expected primary-expression before ‘:’ token
../src/templates.cpp:4: error: expected ‘;’ before ‘:’ token
../src/templates.cpp:5: warning: no return statement in function returning non-void
Run Code Online (Sandbox Code Playgroud)
如果我这样写
return a>=0 ? a : -a;
Run Code Online (Sandbox Code Playgroud)
我没有得到任何错误.这两者有什么区别?
在c ++引言中,第95页作者说c ++程序员倾向于使用!=而不是<在编写循环时.
for (vector<int>::size_type i = 0; i != 10; ++i) is preferred instead of
for (vector<int>::size_type i = 0; i < 10; ++i)
Run Code Online (Sandbox Code Playgroud)
我在加速c ++中读了同样的东西.有人可以解释这背后的基本原理
为了表达
(func1() * func2()) + func3()
Run Code Online (Sandbox Code Playgroud)
将func1()*func2()首先计算,因为它有括号或可以按任何顺序调用函数
首先是func3()然后是(func1()*func2())
我想声明一个非常大的数组.我发现数组的最大大小是size_t,定义为UINT_MAX
所以我写了这样的代码
int arr[UINT_MAX];
Run Code Online (Sandbox Code Playgroud)
当我编译它时,它表示数组维度溢出
但是当我写这样的时候
size_t s = UINT_MAX;
int arr[s];
Run Code Online (Sandbox Code Playgroud)
它编译得当.有什么不同
我最近遇到了这个编译的代码,但运行了分段错误(g ++).这是topcoder topcoder配置文件的原始链接
#include <iostream>
int main = ( std::cout << "Hello world!\n", 42 );
Run Code Online (Sandbox Code Playgroud)
这也编译
int main=0;
Run Code Online (Sandbox Code Playgroud)
有人可以解释这个程序中发生了什么.使用g ++