i = 1, 2, 3, 4, 5;
Run Code Online (Sandbox Code Playgroud)
这实际上是指定1的i.
*****我想知道这种类型的赋值在某个地方是否真的有用吗?*****
你知道这种语法的一些应用吗?
为什么三元运算符没有块?换句话说,为什么以下代码不起作用并报告{}大括号错误?
int main()
{
int i = 1;
(i==1)?{printf("Hello\n")}:{printf("World\n")};
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编辑
也许这个问题被误解了.原因是:为什么不支持块?为什么只有单一表达?
为什么不允许这样做?
int main()
{
int i = 1;
(i==1)?{printf("Hello\n");printf("World\n");}:{printf("Bye\n");printf("World\n");};
return 0;
}
Run Code Online (Sandbox Code Playgroud)
一个原因可能是三元通常用于左侧的条件赋值,而块将没有这样的返回,或者它会与块内的多个语句混淆.
初始化数组时a[][]:
int a[2][5]={(8,9,7,67,11),(7,8,9,199,89)};
Run Code Online (Sandbox Code Playgroud)
然后显示数组元素.
为什么我得到:
11 89 0 0 0
0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
如果你在这里使用花括号而不是第一个括号会发生什么?
我遇到了for一个非常不寻常的条件下面的循环
int main( int argc, const char* argv[] ) {
for ( int i = 0 ; i < ( 10, 20 ) ; i++ ) {
cout << i << endl;
}
}
Run Code Online (Sandbox Code Playgroud)
此源代码已成功编译.它i使用0到19之间的值执行循环(10表达式(10, 20)似乎对迭代次数没有影响).
我的问题:
这个条件语法是什么?为什么不导致编译错误?
编辑:
更大的图片:这个问题始于一个错误,原始条件应该是i < std::min( <expr A>, <expr B> )由于某种原因我省略了std::min.
所以,我想知道为什么代码首先编译.现在我看到这个bug是一种合法的(虽然没用)语法.
谢谢!
不是我的代码,而是来自这里.在read_data()函数中有一个scanf,后面还有我之前看不到的东西.它有什么作用?是STL吗?
scanf("%d %d\n", &a, &b), G[a].pb(b), deg[b]++;
Run Code Online (Sandbox Code Playgroud) 我一直在查看journalctl代码并遇到了以下代码块.
如果在测试条件时存在非零结果,这似乎是退出一系列条件测试的简便方法.很聪明.
但我不确定void演员的目的.它是否抑制一些编译器输出?即使使用-Wall和,g ++也不关心-pedantic -pedantic-errors.
m1 = strjoina("_SYSTEMD_UNIT=", unit);
m2 = strjoina("COREDUMP_UNIT=", unit);
m3 = strjoina("UNIT=", unit);
m4 = strjoina("OBJECT_SYSTEMD_UNIT=", unit);
(void)(
/* Look for messages from the service itself */
(r = sd_journal_add_match(j, m1, 0)) ||
/* Look for coredumps of the service */
(r = sd_journal_add_disjunction(j)) ||
(r = sd_journal_add_match(j, "MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1", 0)) ||
(r = sd_journal_add_match(j, "_UID=0", 0)) ||
(r = sd_journal_add_match(j, m2, 0)) ||
/* Look for messages from PID 1 …Run Code Online (Sandbox Code Playgroud) 我看到这句话: (20, 30, 50)
当我cout << (20, 30, 50);打印50.
当我把它改写(a, b, c)- ,,a 可还是-它总是打印.有人为我解释一下吗?请.bcchar*intc
...比如Algol68或Smalltalk?这将解决的问题是初始化一个const变量,其值在if-then-else语句中确定.
是的,我知道,C++没有这样定义.但是阻碍什么呢?将if-expression重新定义为if语句会破坏向后兼容性吗?或者难以消除所需的语言文档更改的歧义?
例:
auto const x = if (some condition)
{
expression 1;
expression 2;
expression 3;
}
else
{
expression 4;
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下我不能这样做
auto const x = (some condition) ? expression1 : expression2;
Run Code Online (Sandbox Code Playgroud) 我刚开始读C
情况:
x =(y = 3,(z = ++ y + 2)+ 5)
首先评估y = 3然后评估(z = ++ y + 2)
我的问题 :
首先应该评估(z = ++ y + 2),因为逗号(,)的优先级远小于括号
我的思维方式:
由于优先顺序,我们选择外括号
然后我们需要评估括号
在这个(括号)下,我再次开始应用优先规则
所以我先拿内支架进行评估
PS:
这不是重复
我已经通过这些链接但仍然无法理解