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的值为1014的二进制为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)
只使用+(加)、-(减)、=(赋值)三种符号交换i和j变量的值,不能定义新的变量
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。
表达式中 << 的含义
不使用+、-、*、/运算符实现了加法运算
{
if(num2==0) return num1;
return add(num1^num2,(num1&num2)<<1);
}