zoukankan      html  css  js  c++  java
  • 《C Primer Plus》阅读笔记(3)

    第6章 C控制语句:循环
    1.while语句是一个入口条件循环,即是否执行循环的决定是在进入循环之前就做出的。
    for语句也是一个入口条件循环。
    do while语句是一个退出条件循环,即是否再次执行循环的决定是再执行了一次循环之后做出的。

    2.逗号运算符
    逗号运算符扩展了for循环的灵活性,它使您在一个for循环中使用多个初始化或更新表达式(for循环的三种动作:初始化、测试、更新)。
    逗号运算符并不只限于在for循环中使用,但这是最常使用它的地方。
    逗号运算符具有两个属性:<1>它保证被它分开的表达式按从左到右的次序进行运算(换句话说,逗号是个顺序点,逗号左边产生的所有副作用都在程序运行到逗号右边之前生效)。<2>整个逗号表达式的值是右边成员的值。
    注意区分下面两条语句的不同作用:
    houseprice = 249, 500; //houseprice将被赋值为249,整个语句为一个逗号表达式。
    houseprice = (249,500); //houseprice将被赋值为500,整个语句为一个赋值语句。
    逗号也被用做分隔符。在下面这两条语句中,逗号都是分隔符,而不是逗号运算符。
    char ch, date;
    printf("%d %d\n", chimps, chumps);

    3.使用for循环还是while循环?
    通常,在循环涉及到初始化和更新变量时使用for循环较为合适,而在其他条件下使用while循环更好一些。while循环对以下的条件来说是很自然的:
    while(scanf("%d", &num) == 1)
    而对那些涉及到用索引计数的循环,使用for循环是一个更自然的选择。例如:
    for(count=1; count<=100; count++)

    4.在嵌套循环中,通过使内部循环的一部分依赖于外部循环,可以使内部循环在每个周期中的表现不同。

    5.现代的编程习惯是把程序的元素分为接口和实现部分,原型和定义就是这样的例子。接口部分描述了如何使用一个特性,这正是原型所做的;而实现部分说明了采取的具体动作,这正是定义所做的。

    第7章 C控制语句:分支和跳转
    1.C保证逻辑表达式是从左至右求值的。&&和||运算符是序列的分界点,因此在程序从一个操作数前进到下一个操作数之前,所有的副作用都会生效。而且,C保证一旦发现某个元素使表达式总体无效,求值将立刻停止。

    2.条件运算符(?:)
    条件运算符是一个三元运算符,当希望取两个可能的值中的一个时,可以使用条件表达式。典型的例子是将两个值中的最大值赋给变量:
    max = (a>b)? a:b;
    条件运算符也可以使用字符串作为它的第二和第三个操作数,例如:
    printf("You need %d %s of paint.\n", cans, (cans == 1)? "can":"cans");

    3.如果break语句位于嵌套循环里,它只影响包含它的最里层循环。

    4.break语句可用于循环和switch语句中,而continue仅用于循环。但是,如果switch语句位于一个循环中,则可以把continue用于switch语句的一部分。在这种情况下,continue导致程序跳过该循环的其余部分,其中包括switch其余部分。

    5.圆括号中的switch判断表达式应该具有整数值(包括char类型)。case标签必须是整型(包括char)常量或者整数常量表达式(仅包含整数常量的表达式)。不能用变量作为case标签。

    6.switch和if else
    什么时候该用switch,而什么时候又该使用if else结构呢?如果选择是基于求一个浮点型变量或表达式的值,就不能使用switch。如果变量必须落于某个范围,也不能很方便的使用switch。然而,如果可以使用switch,程序通常运行得稍快点,而且占据较少的代码。

    7. goto语句
    goto语句导致程序控制跳转到由指定标签定位的语句。冒号用来将被标记的语句同它的标签相分隔。被标记的语句可以出现在goto之前或之后。goto语句要“谨慎使用,或者根本不用”,但有一种goto的使用被许多C专业人员所容忍:在出现故障时从一组嵌套的循环中跳出(单条break语句仅仅跳出包含它的最里层循环)。

  • 相关阅读:
    集合框架之——迭代器并发修改异常ConcurrentModificationException
    Python day 3 (3) 判断与循环
    hdu 5335 Walk Out(bfs+斜行递推) 2015 Multi-University Training Contest 4
    hdu 2473 Junk-Mail Filter(并查集_虚节点)2008 Asia Regional Hangzhou
    hdu 1573 x问题(中国剩余定理)HDU 2007-1 Programming Contest
    hdu 3461 Code Lock(并查集)2010 ACM-ICPC Multi-University Training Contest(3)
    hdu 2155 小黑的镇魂曲(dp) 2008信息工程学院集训队——选拔赛
    hdu 4081 Qin Shi Huang's National Road System(最小生成树+dp)2011 Asia Beijing Regional Contest
    hdu 3938 Portal(并查集+离线+kruskal)2011 Multi-University Training Contest 10
    hdu 3172 Virtual Friends(并查集)University of Waterloo Local Contest 2008.09
  • 原文地址:https://www.cnblogs.com/geekham/p/3053600.html
Copyright © 2011-2022 走看看