zoukankan      html  css  js  c++  java
  • 逻辑(if)、关系、数字、条件运算符

    if语句
    if-else if-else
     if(a==0){1} else if (a>0){2}  else{3}
     特点:1、2、3只有一个括号会被执行
     陷阱
     1、if(a!=0)  { a不是0;} else {a是0;}错误
     if (a); {  }
     if (a=0) 应为a == 0;
     if (10int a = 9;应为if (10) {int a = 9;}作用域问题
     
    逻辑运算符注意:

    &&——一假即假。

    ||——一真即真
    例:
    int i=0;
    int j=0;
    if((++i>0)||(++j>0))
    {
         printf(“%d,%d ”,i,j);
    }
    输出结果中i=1,j=0
     
      l   若想判断a的值是否在(3, 5)范围内,千万不能写成3<a<5,因为关系运算符的结合方向为“从左往右”。 比如a为2,它会先算3<a,也就是3<2,条件不成立,结果为0。再与5比较,即0<5,条件成立,结果为1。因此 3<a<5的结果为1,条件成立,也就是说当a的值为2时,a的值是在(3, 5)范围内的。这明显是不对的。正确的判断方法是:(a>3) && (a<5)
     
         l   C语言规定:任何非0值都为“真”,只有0才为“假”。因此逻辑与也适用于数值。比如 5 && 4的结果是1,为“真”;-6 && 0的结果是0,为“假

    1.除法与取模运算符

      -7/4 = -1  -7./4 = -1.75  -7%4 = -3

       7/4 = 1      7./4 = 1.75    7%4 = 3 
    1>取余运算:
    正负性取决于%左侧的数值      

    2>C99要求除法运算符使用“趋零截尾”。这种“趋零截尾”的解释方式是建议将 -1.75 转换成 -1,而不是 -2。

    3>取模运算符只用于整数运算,对浮点数是无效的。根据C99的整数除法规定“趋零截尾”规则,如果第一个操作数为负数,取模后得到的模也为负数;如果第一个操作数是整数,那么得到的模也为整数。
     
    余与模的关系:
    a%b = a - (a/b)*b

    2.增量(++)减量(--)运算符 

      当 n++是表达示的一部分时,它表示的意思是“先使用n,然后将它的值增加1”;同样,++n 表示的意思是“先将n值增加1,然后再使用它”。

      如果一个变量出现在同一个函数的多个参数中时,不要将增量或者减量运算符用于它上面。

      当一个变量多次出现在一个表达示里时,不要将增量或减量运算符运用到它上面。

      增量运算符只能用在变量名前,而不能用在常量前。

    3.类型转换

     
    (1)当出现在表达式中时,有符号和无符号的char和short类型都自动转换成int。在需要的情况下,将自动被转换为 unsigned int(如果 short 与 int有相同的大小,那么 unsigned short 比 int 大;在那种情况下,将把unsigned short 转换为 unsigned int)。

    (2)在包含两种数据类型的任何运算里,两个值都被转换成两种类型里较高级别的。

    (3)类型级别从高到低的顺序是 long double、double、float、unsigned long long、long long、unsigned long、long、unsigned int 和 int 。一个可能的例外是当 long 和 int 具有相同大小时,此时 unsigned int 比 long 的级别更高。

    (4)在赋值语句里,计算的最后结果被转换成将要被赋予值的那个变量的类型。可能升级也可能降级。

    (5)当作为函数的参数被传递时,char和short会被转换为int,float会被转换为double。

      级别提升通常是一个平滑的无损害的过程,但是降级可能导致真正的问题。原因很简单:一个较低级别的类型可能不够大,不能存放一个完整的数。通常应该避免自动类型转换,尤其是避免降级。

     

     
     
     
     
     
    if语句:
    if(条件表达式){
    语句1;
    语句2;
    }
    但条件为真,执行大括号内语句,否则,跳过语句,往下。
     
    注意事项:
    if(条件表达式);{
    语句1;
    语句2;
    }
    因为if语句后有大括号,则无论表达式真假,均执行大括号内语句
     
    if条件表达式并不仅仅代表等式;
    例:
    if(a!=0)等价于if(a)
     
     
    条件表达式?表达式1:表达式2 
    如果条件表达式为真,整个表达时的值是表达式1
    如果条件表达式为假,整个表达式的值为表达式2
    例:
       int  c=a>b?a:b;

     

  • 相关阅读:
    MyBatis的动态SQL详解
    Mybatis实现Mapper动态代理方式
    解决-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.
    springmvc前台向后台传值几种方式从简单到复杂
    Maven 项目无法在Ecplise加进tomcat server
    解决-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.
    tomcat启动startup.bat一闪而过
    用Eclipse创建一个Maven Web项目
    使用Yeoman搭建 AngularJS 应用 (8) —— 让我们搭建一个网页应用
    使用Yeoman搭建 AngularJS 应用 (7) —— 让我们搭建一个网页应用
  • 原文地址:https://www.cnblogs.com/Alling/p/3971320.html
Copyright © 2011-2022 走看看