C语言

来源:互联网 发布:电视免费视频软件 编辑:程序博客网 时间:2024/06/06 05:43

C语言小知识

C语言 i++ 和 ++i 区别:

对于单个语句:

   i=1;

   i++;  (i=2)

   ++i;  (i=3)

 两者效果相同

对于赋值语句或判断语句:

  i=0;

  j=i++;   (相当于 j=i; 然后i=i+1)

/*********************************/

  i=0;

  j=++i;  (相当于 i=i+1;然后j=i)

同样判断语句:

        i=1,j=1,k=1;
if(i++==1||++j==2)

{      

               (此时判断句满足第一个条件即向下执行,没有运行第二个条件,i=1;然后i=i+1;i=2;j=1)

i=(--k==1)? ++k:k++; (k=k-1;k=0;k!=1;i=k++;i=k;k=k+1;i=0;k=1)

}

/**********************************************************************************************/

        i=1,j=1,k=1;
if(
++j==2||i++==1)

{      

               (此时判断句满足第一个条件即向下执行,没有运行第二个条件,j=j+1;j=2)

i=(--k==1)? ++k:k++; (k=k-1;k=0;k!=1;i=k++;i=k;k=k+1;i=0;k=1)

}

C语言 表达式中& 和 | 的含义

表达式14 & 11的值为10

14的二进制为1110,

11的二进制为1011,

二者相与等于1010为10。

表达式10 | 7的值为15

10的二进制为1010,

7的二进制为  0111,

两者相或等于1111为15。

14&11|7&10(相当于(14&11)|(7&10))

C语言表达式=前后运算符的运算顺序

    i=2;

   i*=i+3; (相当于i=i*(i+3);i=10)

只使用+(加)、-(减)、=(赋值)三种符号交换ij变量的值,不能定义新的变量

        i=4,j=9;
i=i+j; (i=13)
j=i-j;  (j=13-9=4)
i=i-j;  (i=13-4=9)

表达式中 ^ 的含义为异或

4^5=1

4的二进制为100,

5的二进制为101,

4^5异或为    001为1。

表达式中 << 的含义

3<<2  为12
3的二进制为11,
3<<2 则为1100=12;
3<<1 则为110=6;
t=3<<2;t=12

不使用+-*/运算符实现了加法运算

int add(int num1,int num2)
{
if(num2==0) return num1;
return add(num1^num2,(num1&num2)<<1);
}
原创粉丝点击