zoukankan      html  css  js  c++  java
  • C 运算符, 有符号数据运算,

    1.  b++运算

    int a = 0;
    int b = 1;
    
    a = b++ + b++;
    printf("a=%d ",a);
    printf("b=%d ",b);

    输出结果:

    a=3

    b=3

    运算过程 : (b++的运算是先运算, 后自加)

    (1) . 先把第一个b++看成 x=b++ ,  则 x=1,b=2 ;  第二个 b++ 看成 y=b++ , y=2, b=3

    (2) . a=x+y  a=3

    2 . ++b运算

    int a = 0;
    int b = 1;
    
    a = ++b + ++b;
    printf("a=%d
    ",a);
    printf("b=%d
    ",b);

    输出结果:

    a=6

    b=3

    运算过程: (++b操作先自加, 后运算)

    (1) . 把第一个 ++b  后 b=2 ;  第二个  ++b  后 , b=3 , 因为式子 ++b同优先级所以 , 式子 ++b 的结果是3 , 所以a=6

    扩展 : a  =  ++b  +  ++b  +  ++b;

    计算过程:

    首先运算符 + 是双目运算符 , 则只能先计算前两个 ++b 的内容 有了前两个的结果 , 在结合后面的 + ++b

    3. ++运算结合三目运算符

    例子1

    int main(int argc, char** argv)
    {
      int x, y = 25;
      x = 70;
      y = x++ > 70 ? 100 : 0;             
      printf("x=%d  y=%d
    ",x,y);
      return 0;   
    }

    输出结果:

    x=71   y=0

    运算过程:

    (1) . 式子 x++ 的值是 70 , 然后x自加 x=71

    (2) . x++ > 70运算是错误的,所以y=0

    例子2

    int x=10,y=9;
    int a,b,c;
    a = (--x==y++) ? --x : ++y;
    b=x++;
    c=y;

    运算结果: a=8, b=8, c=10

    运算过程: 

    (1) . 首先判断   ( --x == y++ )  式子 --x 的值是 9 , 式子 y++ 的值是 9  , x=9 , 有= 10, 这个判断是正确的

    (2) . 判断式子正确 会执行 ? 后的 --x , x=8

    (3) . 式子 x++ 是先赋值 x 的值 , 在进行 x 自加 1

    例子:

    #include <stdio.h>
    
    #define pro(x)  (x*x)
    
    int main(int argc, const char *argv[])
    {
    
    	int i=3,j,k;
    	j = pro(i++); // j = i++ * i++
    	k = pro(++i); // k = ++i * ++i
    	printf("j=%d
    k=%d
    ",j,k);
    	return 0;
    
    } // j=12   k=49
    

      

    4 .  逗号运算符

    float x=10.5,  y=1.8, z=0;

    z = (x=5, y = 6, x+y);   z赋值为 11 ,   x赋值为 5 ,   y赋值为6

    z = x=5, y = 6, x+y      这个式子的结果为11 , x 为5 ,  z 为 5 , y 为 6

     5 . sizeof() 运算符   sizeof(<类型或变量名>)

     求所占的字节数

    char buf[] = "hello";           sizeof(buf) 结果为6 , 字符串hello结尾有一个

    char buff[10] = "hello";      sizeof(buff) 结果为10 数组的长度固定为10 个字节

           char *p = 0;                sizeof(p); 结果为 4  , 32位机上指针的占4个字节

        sizeof(char);                  结果为1, char类型占一个字节

  • 相关阅读:
    Swift之 ? 和 !
    objective-c工程使用swift
    NSMethodSignature和NSInvocation的用法
    NSTimer
    iOS 的 XMPPFramework
    计算string高度
    python学习:猜数字小游戏
    python 各种控制语句
    ③ 小程序的代码组成
    ③ 组件&props
  • 原文地址:https://www.cnblogs.com/electronic/p/10769840.html
Copyright © 2011-2022 走看看