在此代码中
#include <stdio.h>
int main(){
int i;
if(i= 50,40)
printf(" if blk i %d\n",i);
else
printf(" else part" );
return 0;
}
输出为
如果blk我50
但是当if语句中的赋值部分添加零时,它将转到else部分。为什么这个0会转到其他部分?
以下代码:
#include <stdio.h>
int main(){
int i;
if(i= 50,40,0)
printf(" if blk i %d\n",i);
else
printf(" else blk i %d\n", i);
printf("i %d\n", i);
return 0;
}
答案 0 :(得分:4)
这句话:
ko.bindingHandlers.option = {
update: function(element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
ko.selectExtensions.writeValue(element, value);
}
};
var mainView = function()
{
this.ts = new testSelect("");
this.ts2 = new testSelect2();
}
function testGroup(label, children) {
this.label = ko.observable(label);
this.children = ko.observableArray(children);
}
function testOption(label, property) {
this.label = ko.observable(label);
this.value = ko.observable(property);
}
function testGroup2(label, children) {
this.label = ko.observable(label);
this.children = ko.observableArray(children);
}
function testOption2(label, property) {
this.label = ko.observable(label);
this.value = ko.observable(property);
}
function testSelect2(content,selectedValue)
{
//alert(content);
this.groups2 = ko.observableArray();
if(content == 1)
{
this.groups2.push(new testGroup("Letters",[new testOption("C","3"),new testOption("D","4")]));
console.debug(groups2());
}
else if(content == 2)
{
this.groups2.push(new testGroup2("Letters",[new testOption2("E","5"),new testOption2("F","6")]));
}
this.selectedOption = ko.observable(selectedValue);
this.specialProperty = ko.computed(function(){
var selected = this.selectedOption();
return selected ? selected : 'unknown';
}, this);
}
var testSelect = function(selectedValue)
{
this.groups = ko.observableArray();
this.groups.push(new testGroup("Letters",[new testOption("A","1"),new testOption("B","2")]));
this.selectedOption = ko.observable(selectedValue);
this.specialProperty = ko.computed(function(){
var selected = this.selectedOption();
return selected ? selected : 'unknown';
}, this);
this.selectedOption.subscribe(function(newValue)
{
if(newValue != -1)
{
alert(newValue);
testSelect2(newValue);
}
});
};
ko.applyBindings(new mainView());
实际上是:
for dividend in dividend_data:
for index in (1,3,4,5):
date = dividend[index]
dividend[index] = datetime.strptime(date, '%m/%d/%Y').strftime("%Y-%m-%d")
逗号运算符导致第一个if(i= 50,40)
被赋值为50(逗号运算符的优先级低于赋值),然后作为条件使用最后一个元素if(40)
但是当在if语句中将赋值部分添加到零时,它将转到else部分。
因为条件是使用最后一个元素i
。 40
导致0
失败,并执行else阻止。
答案 1 :(得分:3)
您正在使用逗号运算符。使用此运算符的表达式的值是右侧的值。
在这种情况下:
var intervalId = null;
var x = 0;
intervalId = setInterval(crunchifyAjax, 100);
function crunchifyAjax() {
if (x < 10) {
x++;
console.log(x);
return true;
}
clearInterval(intervalId, crunchifyAjax);
}
(i= 50,40)
首先设置为50,然后计算值40,因此表达式的值为40.因为这是一个非零值,所以它在布尔上下文中求值为true并输入{ {1}}部分。
在这种情况下:
i
与上面相同,但是然后评估0,因此表达式的值为0.零在布尔上下文中计算为false,因此它进入if
部分。
答案 2 :(得分:1)
表达式a, b
首先评估a
并抛弃结果
然后它评估b
,该值是表达式的结果。
i= 50,40
首先评估i = 50
,然后生成40
作为结果
由于40
不是0
,因此条件转换为true
。
i = 50, 40, 0
评估i = 50
,然后评估40
,然后评估0
,这将成为表达式的值。
并0
转换为false
。
i = (50,40)
会将40
分配给i
并完全忽略50
。