FOO在最终答案中返回'0'的原因是什么:
int FOO = 0, bar = 0, i;
for (i = 0; i < 4; i++) {
int FOO = i;
printf("%d ", FOO);
if (i % 2 == 0)
FOO += bar;
bar++;
}
printf("%d %d", FOO, bar);
答案 0 :(得分:3)
在foo循环中,您定义了一个名为FOO
的变量,这会遮蔽外部的FOO
,这意味着您在循环中使用的FOO
是仅限块的本地变量。最后的printf
在循环之外,因此它打印的FOO
是一个驻留在外部范围内的FOO
。此时阴影int FOO_out = 0, bar = 0, i;
for (i = 0; i < 4; i++) {
int FOO_in = i;
printf("%d ", FOO_in);
if (i % 2 == 0)
FOO_in += bar;
bar++;
}
printf("%d %d", FOO_out, bar);
不再存在。
所以代码可以像这样对待:
tier1.sources = source1
tier1.channels = channel1
tier1.sinks = sink1
tier1.sources.source1.type = exec
tier1.sources.source1.command = cat /testing.txt
tier1.sources.source1.channels = channel1
tier1.channels.channel1.type = memory
tier1.channels.channel1.capacity = 10000
tier1.channels.channel1.transactionCapacity = 1000
tier1.sinks.sink1.type = org.apache.flume.sink.kafka.KafkaSink
tier1.sinks.sink1.topic = sink1
tier1.sinks.sink1.brokerList = kafkagames-1:9092,kafkagames-2:9092
tier1.sinks.sink1.channel = channel1
tier1.sinks.sink1.batchSize = 20