C语言入门篇(八)下

简介: C语言入门篇(八)

实例4:在计算数据类型所占内存大小时,可以使用 sizeof 操作数


🍥 sizeof不是函数,是操作符

🍥 sizeof计算的是类型创建变量的大小,单位是字节


//sizeof 操作符:
#include <stdio.h>
int main()
{
 int a = 10;
 printf("%d\n", sizeof(a));
 printf("%d\n", sizeof(int));
 printf("%d\n", sizeof a);
 //printf("%d\n", sizeof int);//不允许这样计算,说明 sizeof 不是函数
 return 0;
}

实例5: ~


// ~ 按补码二进制位取反
#include<stdio.h>
int main()
{
  int a = 0;
  printf("%d\n", ~a);
  //00000000000000000000000000000000
  //11111111111111111111111111111111 - 补码
  //11111111111111111111111111111110
  //10000000000000000000000000000001 -1
  return 0;
}

🍤 运行结果:


18e86b57cca3bfc5b57a46b1dc794af8_ce9bdca6320c4944b4823a042b2f4fbf.png


实例6:前置 ++ 、 后置 ++


//前置++:先对变量进行自增,然后使用该变量
int main()
{
  int a = 1;
  int b = ++a;//前置++,先++,后使用
  //a=a+1,b=a
  printf("a=%d b=%d\n", a, b);//2 2
  return 0;
}

🍤 运行结果:


36d4abeca49ec35e717e14dbd9596186_d1ce561507c84c7eae1ed86c06af3c3e.png


//后置++:先对a先使用,再自增
#include<stdio.h>
int main()
{
  int a = 1;
  int b = a++;//后置++,先使用,后++
  //b=a,a=a+1
  printf("a=%d b=%d\n", a, b);//2 1
  return 0;
}

🍤 运行结果:

0de886771eb2259671facba30b2018c6_eb3aee7e00e94bc39d099cf1bb302016.png


前置--、后置--等同


6.2 sizeof 和 数组

实例:


#include <stdio.h>
void test1(int arr[])
{
  printf("%d\n", sizeof(arr));//(2)
}
void test2(char ch[])
{
  printf("%d\n", sizeof(ch));//(4)
}
int main()
{
  int arr[10] = { 0 };
  char ch[10] = { 0 };
  printf("%d\n", sizeof(arr));//(1)
  printf("%d\n", sizeof(ch));//(3)
  test1(arr);
  test2(ch);
  return 0;
}

🍤 运行结果:


60784845ce3daabce1e97199a3aeb7ec_27868b770a734d448cffc6befd7512a5.png


7. 关系操作符


>
>=
<
<=
!=   用于测试“不相等”
==      用于测试“相等”

🍩编写过程中 == 和 = 不要写错


实例:判断闰年


#include<stdio.h>
int main()
{
  int y = 0;
  scanf("%d", &y);
  //1. 能被4整除,并且不能被100整除
  //2. 能被400整除是闰年
  if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
  {
    printf("闰年\n");
  }
  else
  {
    printf("不是闰年\n");
  }
  return 0;
}


8. 逻辑操作符


&&     逻辑与--并且
||     逻辑或--或者
1&2----->0
1&&2---->1
// & 两边二进制补码计算,相同为1,不同为0
// && 两边同为真,结果也是真,用 1 表示;只要有一个为假,结果就是假,用 0 表示
1|2----->3
1||2---->1
// | 两边二进制补码进行计算,只要有一个 1 就是 1;当两边都为 0 时,才是0
// || 两边只有一个真时,就为真;都是假时,才为假

实例1:


// &&
#include <stdio.h>
int main()
{
  int i = 0, a = 0, b = 2, c = 3, d = 4;
  i = a++ && ++b && d++;
  printf("a = %d b = %d c = %d d = %d\n", a, b, c, d);
  return 0;
}

🍤 运行结果:


3b3fa339e472090102cae8a7e54a8538_3e84235b97a54f81a7735834cf0d9d51.png


实例2:


// ||
#include <stdio.h>
int main()
{
  int i = 0, a = 0, b = 2, c = 3, d = 4;
  i = a++||++b||d++;
  printf("a = %d b = %d c = %d d = %d\n", a, b, c, d);
  return 0;
}

🍤 运行结果:


7c24212facc2861ccb5d695abf8f1878_9c73b9f636304796b2cdd28600c8fd9c.png


9. 条件操作符


exp1 ? exp2 : exp3

实例:


//如果 a>5,则 b=3
//如果 a<=5,则 b=-3
if (a > 5)
        b = 3;
else
        b = -3;

上述代码可以转换成条件表达式:


#include <stdio.h>
int main()
{
  int a ;
  scanf("%d", &a);
  int b = a > 5 ? 3 : -3;
  printf("%d\n", b);
  return 0;
}

🍤 运行结果:


a9eec872f75d9f2fcf4314dbb7332902_7b8f2d818cfe4e28b199e7e98fec87fd.png


使用条件表达式实现找两个数中较大值


#include <stdio.h>
int main()
{
  int a, b ;
  scanf("%d %d", &a, &b);
  int c = a > b ? a : b;
  printf("%d\n", c);
  return 0;
}

相关文章
|
21小时前
|
编译器 C语言 C++
从C语言到C++③(第一章_C++入门_下篇)内联函数+auto关键字(C++11)+范围for+nullptr(下)
从C语言到C++③(第一章_C++入门_下篇)内联函数+auto关键字(C++11)+范围for+nullptr
6 0
|
21小时前
|
存储 安全 编译器
从C语言到C++②(第一章_C++入门_中篇)缺省参数+函数重载+引用(下)
从C语言到C++②(第一章_C++入门_中篇)缺省参数+函数重载+引用
4 0
|
21小时前
|
存储 编译器 C语言
从C语言到C++②(第一章_C++入门_中篇)缺省参数+函数重载+引用(中)
从C语言到C++②(第一章_C++入门_中篇)缺省参数+函数重载+引用
4 0
|
21小时前
|
自然语言处理 编译器 C语言
从C语言到C++②(第一章_C++入门_中篇)缺省参数+函数重载+引用(上)
从C语言到C++②(第一章_C++入门_中篇)缺省参数+函数重载+引用
9 0
|
21小时前
|
编译器 C语言 C++
从C语言到C++①(第一章_C++入门_上篇)C++学习介绍(命名空间和C++输入输出流)(下)
从C语言到C++①(第一章_C++入门_上篇)C++学习介绍(命名空间和C++输入输出流)
5 0
|
21小时前
|
Java 编译器 C#
从C语言到C++①(第一章_C++入门_上篇)C++学习介绍(命名空间和C++输入输出流)(上)
从C语言到C++①(第一章_C++入门_上篇)C++学习介绍(命名空间和C++输入输出流)
11 0
|
5天前
|
C语言
C语言——入门分支与循环
C语言——入门分支与循环
4 0
|
6天前
|
编译器 C语言
函数深入解析(C语言基础入门)
函数深入解析(C语言基础入门)
|
6天前
|
C语言
数组深入剖析(C语言基础入门)
数组深入剖析(C语言基础入门)
|
6天前
|
算法 C语言 芯片
振南技术干货集:振南当年入门C语言和单片机的那些事儿(1)
振南技术干货集:振南当年入门C语言和单片机的那些事儿(1)