我不太清楚这种情况下的if语句是如何工作的。它会评估x != 0
语句,当它不再为真时,它会将z
分配给y
,然后将break
分配给if语句?
int main()
{
int x, y, z, i;
x = 3;
y = 2;
z = 3;
for (i = 0; i < 10; i++) {
if ((x) || (y = z)) {
x--;
z--;
} else {
break;
}
}
printf("%d %d %d", x, y, z);
}
答案 0 :(得分:30)
让我们把它分解成更小的位。
if (x)
与if (x != 0)
相同。如果x != 0
,则您知道条件为true
,因此您不必执行if
的其他部分。
如果第1部分为false
,则y = z
会将z
分配到y
并返回y
的最终值。
从第2点开始,我们可以理解if (y = z)
相当于y = z; if (y != 0)
因此,从第1点和第3点开始,我们可以理解:
if ((x) || (y = z)) {
doSomething();
}
else {
doSomethingElse();
}
与:
相同if (x != 0) {
doSomething();
}
else {
y = z;
if (y != 0) {
doSomething();
}
else {
doSomethingElse();
}
}
但它确实不是特别易读的代码。
答案 1 :(得分:18)
没有。 if ((x) || (y = z)) {
在C-English中基本上是:
x
非零,请评估以下代码。x
为零,请将y
设置为z
。y
非零,请评估以下代码。如果x
为零或y
为零,则会突破循环。
答案 2 :(得分:7)
int main()
{
int x = 3;
int y = 2;
int z = 3;
unsigned int i;
for (i = 0; i < 10; i++)
if (x != 0) {
x = x-1;
z = z-1;
}
else {
y = z;
if (y != 0) {
x = x-1;
z = z-1;
}
else {
break;
}
}
}
printf("%d %d %d", x, y, z);
}
答案 3 :(得分:3)
在C中,有short-circuiting,因此在y=z
变为零之前,不会评估语句x
。
x == 0
时,z
也会以同样的方式递减,z == 0
。因此,由于分配,y
当时也将为零。声明y=z
此时还会返回y
,这将作为条件进行评估,由于这也是0
,else break
将会被点击。
因此我认为答案应该是0 0 0
。
答案 4 :(得分:1)
在if语句中使用赋值时,将返回赋值的结果。所以当你写:
if (x = y)
除非y
的值为0
,否则它将始终为true,因此作为分配的结果返回0
并且不执行if语句。(除{{之外的任何内容1}}被认为是真的。)
所以当你写:
0
仅当if ( x || (x = y))
为x
&amp;时,if语句才会执行0
为y
。
答案 5 :(得分:0)
这里
$(notesSelector).on('froalaEditor.initialized', function (e, editor) {
//set original html after loading
froalaInitialHtml = $(notesSelector).froalaEditor('html.get');
});
$(notesSelector).froalaEditor({
key: 'XXXXXXXXXX',
toolbarButtons: ['bold', 'italic', 'underline', 'strikeThrough', 'subscript', 'superscript', 'fontFamily', 'fontSize', '|', 'color', 'emoticons', 'inlineStyle', 'paragraphStyle', '|', 'paragraphFormat', 'align', 'formatOL', 'formatUL', 'outdent', 'indent', 'quote', 'insertHR', '-', 'insertLink', 'insertImage', 'insertVideo', 'insertFile', 'insertTable', 'undo', 'redo', 'clearFormatting', 'selectAll', 'html'],
toolbarButtonsXS: ['undo', 'redo' , '-', 'bold', 'italic', 'underline','insertImage'],
imageEditButtons:['imageInfo', 'imageAlign' ],
toolbarSticky: true, });`
有两个条件
一个条件是
if ((x) || (y = z))
而另一个条件是if ((x))
如果其中一个是真的那么如果部分是执行,否则条件工作