PZK学C语言之入门数据类型,进制转换,输入输出,运算符,分支语句ifelse

PZK学C语言之数据类型,进制转换,输入输出,运算符, 分支语句ifelse

在这里插入图片描述

一、写第一个c语言

1.创建c语言流程

a.打开终端,创建.c文件
b编辑.c文件
vi +文件名 ; gedit +文件名.c
c.写c语言代码
d. 编译 gcc xxx.c -o 可执行程序名字
e. ./可执行程序名 默认是a.out**

2.解释c语言代码

   #include <stdio.h>     预处理:头文件-包含函数定义。
   //第一个c语言程序       注释--给人看,编译器当做空白,多行注释 /*xx*/
   int main()                    入口函数(main函数)--程序执行的入口
   { 
        int i = 0;                 定义变量----定义一个i变量
        printf("hello world\n");  打印--屏幕上照常输出
        return 0;                 返回值: 返回给main的外部
     }

---------------------------------------------------------------------------------------------------------------------------------------------------------------

二、常量

1.常量:不可以改变的量,不可以修改的量 (建筑物高度,地球直径)
一般时候,常量是给变量赋值使用。
2.整形常量: -1 , 0 ,100 所有的值都是整数
表示方式:10进制-满10进1, 16进制满16进1,用0到9+ABCDEF组成,加前缀0x或者H后缀。2进制常量只有1和0,8进制1到7表示,一般用0的前缀
3.浮点型常量:表示小数 -1.2, 1.0, 12.56 ,在内存中存储方式特殊。有误差。浮点型和0比较 float x =0; 不可以 x == 0
4.字符型常量: ‘a’, ‘1’, ‘\0’, ascii表
5.指针常量:指向某一个位置的常量(以后重点)
6.字符串常量: 多个字符用双引号
---------------------------------------------------------------------------------------------------------------------------------------------------------------

三、2进制计算

1.进制关系

十进制: 用0到9表示,满10进1,9+1=10,99+1=100 ,100-1 =99
二进制:用0和1表示:满2进1,借1当2. 10 -1 = 1; 1 + 1 = 10
十六进制:用0到9和ABCDEF表示,满16进1, 9 +1=0XA F+1=0X10
八进制:用0到7表示,满8进1,借1当8 ;7+1=10;7-1=6 ;77+1=100

**

2.二进制计算

**
移位运算:算数左移 < ,把左边第一个删除,右侧添加0
10010010 < 1 = 00100100
10010010 < 8 = 0
10010010 < 3 = 10010000
算数右移: > ,把右侧删除一个,左侧添加0
10010010 > 3 = 00010010

: & ,相同位上都是1则结果为1,否则为0. (有0则0)
10010 & 1011 00010010
& 00001011
------------------
00000010

: | ,相同位上有1则结果位1,否则为0,(有1则1)案例: 10010 | 1011 = 11011

取反:~,如果是1则取反的结果位0,如果是0则取反的结果位1,案例 ~100110 = 011001

3.进制转换

十六进制和二进制转换
2进制转16进制:二进制的4个位,表示16进制中的1位。 案例:1000 1001 = 0x89
案例: 11011 --> 0001 1011 =0x1B
16进制转2进制:一个16进制位表示4个2进制位 案例: 0xA0B = 1010 0000 1011

十六进制和10进制转换:
10进制 0~9 10 11 12 13 14 15 16
16进制 0~9 A B C D E F 0X10
8进制和2进制的计算
2进制转8进制,3个2进制位转换成1个8进制位
011 011 010 --> 332
8进制转2进制,1个8进制位转换成3个二进制位
7024 = 111 000 010 100
10进制转换成2进制,把10进制短除法2后直到商0后得到的余数从下往上写就是2进制
2进制转10进制,用1 2 4 8 16 1101011 = 64+32 + 8+ 2+1 = 107

---------------------------------------------------------------------------------------------------------------------------------------------------------------

四、变量:可以变的量,可以修改的量(64为系统)

1、整形是 int ,表示整数如-20, 0, 1。 总共是4字节可以用sizeof(int)打印,表示的数值范围是-21亿~+21亿
短整形 short ,表示短整数。 总共是2字节16位,表示的数值范围是65535
长整形 long, 表示长整数。 总共是8字节。对long类型赋值,需要在常量后加L ,long x = 10L;

2.浮点型float ,单精度,表示6位小数,表示小数类型,1.2,-2.3, 0.0,总共多少位,给float类型复制需要加f。
double,双精度,表示12位小数,总共多少位

3.字符类型char ,表示字符如‘a’,‘b’, 在内存中占1个字节。范围是0~255,sizeof(char) = 1;
ascii:是把字符和整形对应的一个表 ‘0’—48 ,‘A’—65, ‘a’—97, ’ '—32 , ‘\0’—0
转义字符: 和原本意思不一样了。 \n —换行 \t----teb \—一个\ %%—表示一个% " ----表示双引号

4.字符串类型:没有对应变类型,“aa”,char* p = “asdfgasdg”;
5.每个类型都分为有符号和无符号

正数是无符号,负数是有符号,如果只想表示正数则用无符号。关键字 unsigned
例如:unsigned int x = 123;
补充: 1字节 = 8位

               1KB = 1024B
               1MB = 1024KB
               1GB = 1024MB
               1TB = 1024GB
               1EB = 1024TB
            

---------------------------------------------------------------------------------------------------------------------------------------------------------------

五、输入和输出 加上#include<stdio.h>

1.在屏幕上输出,printf

   格式: printf("照常输出部分 占位符 ",变量);
   格式: printf("照常输出 %d %c\n",变量1,变量2)printf("int = %10d \nfloat = %10.5f\n",x,z);
       占位符:           %d--------打印int整形的值 ,%10d 总共显示10位,不够的部分用空格替换,右对齐
                        %o(字母o) 打印8进制
                        %x---------打印16进制
                        %hd--------打印short的值
                        %ld--------打印long的值
                        %u---------打印无符号数据的值
                        %c-------- 打印字符类型
                        %f-------- 单浮点型,%5.3f总共5位,小数点占3位。
                        %lf--------双精度浮点型
                        %s---------字符串 
                        %p---------指针

2.输入 scanf

格式: scanf("占位符"&变量)scanf("占位符,占位符"&变量1&变量2);如果是逗号,则输入的时候也要用逗号隔开
      scanf("占位符 占位符"&变量1&变量2);如果是空格,输入的时候也是空格隔开
  

---------------------------------------------------------------------------------------------------------------------------------------------------------------

六、运算符

1.算数运算符

+加法 计算两个数的和,例如 int a = 10 ;int b = 20; a + b ,其中a和b的值不变,a+b得到的是a和b的结果。如果a修改需要赋值
- 减法 同上
*乘法 同上
/ 除法 整除,所有的小数部分丢弃。 12/21 = 0 12 / 4 = 3; 12/5=2
% 取模,余数,得到相除后的余数 12%21=12 ,12%4 = 0; 12%5=2 ,值1%值2把结果限定在值2范围内,123%5=3

2.赋值运算符

格式: 左值= 右值; 把右值给到左值
复合赋值运算符:+= ,*= ,-=,/= ; %=; |= ; &=; >>=;<<= (算数运算符,二进制运算符)
例如: int x = 10; int y = 20; y =x+2; 等价于 y = y(x+2);是240
注意: 左值不可以是常量 ,只可以是变量。不可以有其他的运算。

3.关系运算符

关系运算符的结果只有两个,真或者假,非0为真,0表示假。
> 如果左值大于右值,结果为真,否则为假
>= 如果左值大于或者等于右值,结果为真
< 如果左值小于右值结果为真
<= 如果左值小于等于右值,结果为真
== 如果左值和右值相同则结果为真,否则为假
!= 如果左值和右值不相同则结果为真
注意:一般情况用于判断语句,比如说if语句中。
在比较运算符==时候,需要把常量放前面,以防出现赋值运算符
关系运算符连用是不正确的,例如:10 < time < 15

4.逻辑运算符:(双目)

&& : 表达式左值和右值都为真则结果为真,否则为假 。&表示按位与
|| :表达式左值或者右值有一个为真则结果为真。|表示安位或。
! :逻辑非,如果表达式为真则结果为假, !(2>6)
注意:&&有截取功能,如果第一个表达式(左值)为假,右侧的值不计算。
|| 也有截取功能,如果第一个表达式为真,则第二个表达式不会计算。
案例1:请输入你的年龄,和金钱。如果年龄小于18岁,并且钱大于10000,则是高富帅,否则为屌丝。(代码day01/gaofushuai.c)
练习2:输入三个数,请判断哪个值最大,打印出最大值。

5.自增自减运算符 (单目)

前加加:++x; 表示x= x+1;是先自己加1后再做其他事情
后加加:x++; 表示x = x+1;是先计算完其他操作再自己加1(暂时理解遇到分号加1)
前减减:–x:
后减减:x–:表示x = x-1;是先计算完其他操作再自己减1(暂时理解遇
到分号减一)

6.三目运算符 (运算符有三个值)

格式: 表达式1 ? 表达式2:表达式3
执行:如果表达1为真则执行表达式2,如果表达式1为假则执行表达式3.
三目运算符可以代替简单的if语句使用。并且三目运算符可以嵌套使用。

7.运算符的优先级

优先级:先计算的运算符优先级高,否则优先级低
优先级顺序:括号–>单目–>算术运算符–>移位运算符–>关系运算符–>位运算符–>逻辑运算符–>三目运算符–>赋值运算符–>逗号运算符。
---------------------------------------------------------------------------------------------------------------------------------------------------------------

七、分支语句

1.if分支语句

  if格式:
      if(条件判断)
      {
         	语句1}
      else
      {
      		语句2}

执行:如果条件1满足则执行语句1,不满足执行语句2;

2.格式2:

     if(条件判断1)
     {
     	    语句1}
     else if(条件判断2)
     {
            语句2}
     else 
     {
            语句3}

执行: 先判断条件1是否满足,
如果满足则执行语句1后结束if语句,
如果条件1不满足继续判断条件2,
如果条件2满足则执行语句2,否则执行语句3;
注意:有if不一定有else if和else 但有else必定有if ,有else if也必定有if。
练习: 判断某一个数是不是回文:12321 22222,32123 (day01/10same.c)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值