C++ Primer 4 CPP Note 1.4 控制结构
1.4.1 while 语句
C++中的while语句的结构依然是 :while(condition){ while_body_statement } .
和 C#,Java相比.C++中的while语句中的条件(condition) 值非0则为真。意思是 -1 负值同样为真 ,只要 不是0都为真.
而C#和Java中的条件只能是boolean值.
所以以下为死循环:
while(-1 || 1){
std::cout << "printf" << std::endl;
}
PS : 突然想到如果条件不是值不是表达式 而是一个对象,我在思考当对象为null等于false,不为空就等于true(类似javascript).这个等以后论证,学习就是这样不停的填补漏洞..因为我学习的角度不同与正规学生。可能在学习模式上有点不一样... 条条道路通罗马.但是Groovy中的while满足以上所有条件.(在1.4.3有部分论证)
所以可以将上一段代码改成.
int sum = 0,value; //注意这里的sum要初始化,不然要报错.
while(std::cin >> value){
sum += value;
}
std::cout << "sum is : " << sum <<std::endl;
PS:因为是死循环.所以要退出循环后才能看见结果,在windows下面是通过ctrl+z来退出,unix中是ctrl+d
1.4.2 for 语句
for语句的结构和C#,Java的一样:
一个初始化语句,一个条件,一个表达式. 初始化一次,然后判断条件,然后执行循环体代码,然后执行表达式,然后再判断条件...直到条件为假退出循环.
至于在循环体中显示的使用break ,return 来退出循环. C++也是一样的.
C++ 、C# 、Java中for语句大体如下:
for(int i = 0 ;i<100 ;i++){
//.....
if(i==10) break;
}
Groovy的很有意思:
for(i in 0..10)
println "this is ${i} "
说到for语句顺便说说foreach语句 :
C++中有没有,我目前学到这里还不知道.但是C#和JAVA的要说下
在java中结构是这样的 :
for( iterable_type iterable_element : iterable ) {
}
而在C#中:
foreach( iterable_type iterable_element in iterable ) {
}
Groovy依然那样简洁:
def list = ['a','b','c','d','f']
list << 'e'<< 'f'<< 'g'
//
def say = {val->
println "word : ${val}"
}
//
for(i in list)
say(i)
其结果:
word : a
word : b
.
.
word : g
1.4.3 if语句
同while一样,if(0) == false , if(-1||1) == true
另外就想我在1.4.1while中的那个推断一样(类似javascript)
int sum = 0,value;
while(std::cin >> value){
if(!""){
sum += value;
}
}//此段代码结果永远为0
于是推导出:
while(!""){
std::cout << "printf"<<std::endl;
}//永远不会打印出 'printf'
所以可能我刚才的猜测是正确的.(如果""字符串在C++中和在JAVA中一样也属于对象的话.)