i++是后缀自增运算符,++i是前缀自增运算符。
int i = 1;
int k = i++;//k=1
int k1=++i//k1=2
printf("%d\n",i++);//输出是1,但整个程序运行结束后是2
printf("%d\n",++i);//输出是2
c运算符
#include <stdio.h>
逻辑运算符
int main(){
int a = 10;
int b = 5;
if (a && b)//如果两个操作数都非零,则条件为真。
{
/* code */
printf("条件为真\n");
};
if (a || b)//如果两个操作数中,一个为非零,则条件为真。
{
/* code */
printf("条件为真\n");
};
if (!(a && b))//非,起反作用的 运算符
{
/* code */
printf("条件为假\n");
};
}
位运算符
int main()
{
unsigned int a = 60; /* 60 = 0011 1100 */
unsigned int b = 13; /* 13 = 0000 1101 */
int c = 0;
c = a & b; /* 12 = 0000 1100 */
printf("Line 1 - c 的值是 %d\n", c );
c = a | b; /* 61 = 0011 1101 */
printf("Line 2 - c 的值是 %d\n", c );
c = a ^ b; /* 49 = 0011 0001 */
printf("Line 3 - c 的值是 %d\n", c );
c = ~a; /*-61 = 1100 0011 */
printf("Line 4 - c 的值是 %d\n", c );
c = a << 2; /* 240 = 1111 0000 */
printf("Line 5 - c 的值是 %d\n", c );
c = a >> 2; /* 15 = 0000 1111 */
printf("Line 6 - c 的值是 %d\n", c );
}
赋值运算符
int main()
{
int a = 21;
int c ;
int d;
int *ptr;//定义一个指针变量ptr,指针变量的值是对应的变量的地址值。int *与int 不是同一个概念,int是指的整数类型,int *是指的指针变量
/*指针变量是存放地址的变量,指针就是地址,指针变量的值就是地址,指针的值是地址”的说法是错误的,应该是“指针变量的值是地址”。*/
c = a;
printf("Line 1 - = 运算符实例,c 的值 = %d\n", c );
c += a;
printf("Line 2 - += 运算符实例,c 的值 = %d\n", c );
c -= a;
printf("Line 3 - -= 运算符实例,c 的值 = %d\n", c );
c *= a;
printf("Line 4 - *= 运算符实例,c 的值 = %d\n", c );
c /= a;
printf("Line 5 - /= 运算符实例,c 的值 = %d\n", c );
c = 200;
c %= a;
printf("Line 6 - %%= 运算符实例,c 的值 = %d\n", c );
c <<= 2;
printf("Line 7 - <<= 运算符实例,c 的值 = %d\n", c );
c >>= 2;
printf("Line 8 - >>= 运算符实例,c 的值 = %d\n", c );
c &= 2;
printf("Line 9 - &= 运算符实例,c 的值 = %d\n", c );
c ^= 2;
printf("Line 10 - ^= 运算符实例,c 的值 = %d\n", c );
c |= 2;
printf("Line 11 - |= 运算符实例,c 的值 = %d\n", c );
}
int main()
{
int i = 418;
int* pi;
// 我们知道 int* 是指向“整型”的指针,
// 那么 pi 可以保存的是 int 类型的变量 i 的地址:
pi = &i;
int** ppi;
// ppi 可以保存的是 int* 类型的变量 pi 的地址:指向指针变量的地址 其实就是一种递进的关系
ppi = π
return 0;
}