赞
踩
C语言逻辑与、或操作符、条件操作符、逗号表达式、下标引用、函数调用、结构体调用操作符的介绍。
#include <stdio.h> int main() { int a = 5; int b = 3; int c = a && b; // a、b都为真,所以返回值 c 为 1 printf("%d\n", c); // 1 int a1 = 0; int b1 = 0; int c1 = a1 && b1; // a1、b1都为假,所以返回值 c1 为 0 printf("%d\n", c1); // 0 return 0; }
#include <stdio.h> int main() { int a = 5; int a1 = 0; int b = 3; int b1 = 0; int c = a && b; // a、b都为真,则 c 为真,c = 1 int c1 = a && b1; // a为真,b1为假, 则 c1 为 假, c = 0 int c2 = a1 && b; // a1 为假, b为真, 则 c2 为假, c = 0 int d = a1 || b1; // a1、b1都为假,则 d 为假,c = 0 int d1 = a || b1; // a为真,b1为假, 则 d1 为 真, c = 1 int d2 = a1 || b; // a1 为假, b为真, 则 d2 为真, c = 1 printf("c=%d\n", c); // 1 printf("c1=%d\n", c1); // 0 printf("c2=%d\n", c2); // 0 printf("d=%d\n", d); // 0 printf("d1=%d\n", d1); // 1 printf("d2=%d\n", d2); // 1 return 0; }
逻辑与,若前一个表达式为假,则不计算后一个表达式,直接为假。
#include <stdio.h> int main() { int i = 0, a = 0, b = 2, c = 3, d = 4; i = a++ && ++b && d++; // a++ 先参与运算再自增 所以 上式中 a++表达式值为 0 // 逻辑与操作符,前一个表达式为0, 后面不在计算,直接为假。 // 所以 a++ && ++b 值为0,且++b不参与运算 // 同理 0 && d++ 值也为0 且 d++不参与运算 printf("a=%d\nb=%d\nc=%d\nd=%d\n", a, b, c, d); // 1 2 3 4 // 若a = 1,则都参与运算结果为 2 3 3 5 return 0; }
逻辑或,若前一个表达式为真,则不计算后一个表达式,直接为真。
#include <stdio.h> int main() { int i = 0, a = 1, b = 2, c = 3, d = 4; i = a++ || ++b || d++; // a++ 先参与运算再自增 所以 上式中 a++表达式值为 1 // 逻辑或操作符,前一个表达式为1, 后面不在计算,直接为真。 // 所以 a++ || ++b 值为1,且++b不参与运算 // 同理 1 || d++ 值也为1 且 d++不参与运算 printf("a=%d\nb=%d\nc=%d\nd=%d\n", a, b, c, d); // 2 2 3 4 // 若a = 0; 则 a++ 和 ++b 参与运算, d++不参与运算 结果为 1 3 3 4 return 0; }
#include <stdio.h>
int main()
{
int a = 5;
int b = 3;
int c = a > b ? a : b; // 若 a > b 则 c = a, 否则, c = b;
printf("%d\n", c); // 5
return 0;
}
#include <stdio.h>
int main()
{
int a = 5;
int b = 3;
int c = (a + b, a = a / 5, b = b - 5, b + a);
// (不影响a、b的值, a = 1, b = -2, -2 + 1 )最后一个表达式的值为-1 结果为-1
printf("%d\n", c); // -1
return 0;
}
#include <stdio.h> int main() { int arr[10] = { 0 }; // arr[7] ---> *(arr+7) ---> *(7+arr) ----> 7[arr] arr[7] = 5; // // arr 是数组首元素地址 // 7 指的是 arr + 7,即首元素地址加 7 即第 8 个元素的地址 // arr[7] = 5 本质上是 *(arr + 7) = 5, 即第 8 个元素修改为5 5[arr] = 3; printf("%d\n", arr[7]); // 5 printf("%d\n", 5[arr]); // 3 return 0; }
#include <stdio.h> // 函数定义 int Add(int x, int y) { return x + y; } int main() { int a = 5; int b = 3; // 函数调用 int c = Add(a, b); // 函数调用操作符()不能省略, 此时操作数为3 printf("%d", c); // 8 return 0; }
#include <stdio.h> #include <string.h> // 创建结构体类型 struct stu { char name[20]; int age; double score; }; void set_stu(struct stu* ps) { /*strcpy((*ps).name, "zhangsan"); (*ps).age = 20; // 结构体对象.成员 (*ps).score = 100.00;*/ strcpy(ps->name, "zhangsan"); ps->age = 20; // 结构体指针->成员 ps->score = 100.00; } void print_stu(struct stu ss) { printf("%s %d %lf", ss.name, ss.age, ss.score); // zhangsan 20 100.000000 } int main() { struct stu s = { 0 }; set_stu(&s); print_stu(s); return 0; }
C语言逻辑与、或操作符、条件操作符、逗号表达式、下标引用、函数调用、结构体调用操作符的介绍。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。