C语言_day04

1.常量与变量:

1.常量:在程序运行中,其值不能被改变的量; 反过来说 错误;值不能修改就是常量

  1. 整型 100 125 -12 0;
  2. 实型 3.14 0.125 -3.7891
  3. 字符型 'a' 'b' '2' '0' '-1'
  4. 字符串 'ab' '1234' '-12332' 
  • 使用场合:表达式或赋值语句中;a=10+b; c=12.5

2.变量:系统根据变量的类型开辟对应的空间,其值可以被修改;

  1. int num=10; 变量名num代表的是空间的内容;操作变量名就是对空间内容的操作;
  2. 命名规则:由数字 字母 下划线组成,但不能以数字开头;第一个字符必须以字母或下划线开头;建议 小写单词+'_'组成
  3. 特点:变量在编译时为其分配相应的内存地址,可以通过名字和地址访问相应空间;

2. 整型常量的进制:二进制 八进制 十进制 十六进制

  • 不同的进制仅仅是对同一个数据的表现形式,并不会修改数据本身;

                                  int num=100;

八进制:0 ~ 7   %o   printf("num=%#o\n",num); 以0开头 //0144

十进制:0 ~ 9   %d %u %ld %lu  printf("num=%#d\n",num); //100

十六进制:0 ~ 9   a ~ f    %x  printf("num=%#x\n",num); 以0x开头 //0x64

  • 不同进制之间的转换:

3.整型变量的操作——读(取值),写(赋值,赋值语句要保证=号两边类型相同)

eg: 案例分析

int  有符号输出 %d  无符号输出 %u;

float 有符号输出%f 无符号输出%fu; 7位有效数字,

double 有符号输出%lf 无符号输出%lfu;16位有效数字,

long 有符号输出 %ld  无符号输出 %lu;

short 有符号输出 %hd  无符号输出 %hu;

#include<stdio.h>
void test04()
{
    int num01; //局部变量不初始化,内容随机
    int num=100;  //所以一定要定义一个初始值;赋值100
    int data=0;
    printf("num=%d\n",num);  //读--取
    data=num;  //将num的值读取后赋值给data

    int num1=0;
    // %d 有符号int数据输出
    printf("num1=%d\n",num1);
    unsigned int num2=0;
    // %u无符号int数据输出
    printf("num2=%u\n",num2);
}
int main(int argc,char *argv[])
{
    test04();
    return 0;
}

4.实型(浮点型)常量:

1.错误:float f (4字节) = 3.14 ( 8字节);  ( 3.14f 四字节)   // 3.14 是const double 

   正确:float f=3.14f   double d=3.14;

相当于将8升水倒入4升的杯子中,f 存在内存溢出问题; 应该对应的是3.14f 倒入;

#include<stdio.h>
void test01()
{
    //以f 结尾的实型常量,为float类型,占4字节
    printf("sizeof(3.14)=%d\n",sizeof(3.14f));  //4
    //不以f结尾的实型常量,为double类型,占8字节
    printf("sizeof(3.14)=A%d\n",sizeof(3.14)); // 8
}
int main(int argc,char *argv[])
{
    test01();
    return 0;
}

5. char字符常量和变量:

  1. 直接常量:"1" "b" 'c'      ''单引号表示字符对应的ASCII值,""双引号表示的是字符串首元素在计算机的地址;字符串除了表示符号不同外,字符串也会默认\0结尾,多一个占用字节
  2. 字符变量:用 char 定义,每个字符变量被分配到一个字节的内存空间,字符值以ASCII码的形式存放在变量的内存单元中;
  3. 输出表示:%c 输出的是字符本身,一字节;%d输出的是字符对应的ASCII值,4字节;
    1. %05d 右对齐,左边空的位置用0补齐;%-05d,变成了12300,改变了原来大小,故没有此写法;%5.2f 总位宽为5,.2表示小数保留两位,

  4. 计算机识别的是二进制数,无法直接识别字符; ASCII表是 字符与数字对应关系表
  5. char ch='a'; char ch=97;一个意思 定义一个字符变量;ch存储的是'a' 的ASCII中对应的值
  6. ch='a'; ch=ch+1    // 97+1 =98   sizeof('a')----->4 ,int结果占4字节   sizeof(char)----->1 ,字符本身占1字节;
  7. 获取一个字符的方法:
    1. 无论scanf敲入多少个字符,只获取第一个scanf("ch=%c\n",ch);   
    2. ch=getchar();
  8. #include<stdio.h>
    void test()
    {
    	char ch1,ch2;
    	printf("请输入字符串:");
    	// 输入 abcde ch1得到a,ch2得到d 别的都丢弃
    	ch1= getchar();   //得到a 
    	getchar();  //丢弃b 
    	getchar();  //丢弃c 
    	ch2=getchar();  //得到d 		
    	printf("ch1=%c\n",ch1); 
    	printf("ch2=%c\n",ch2); 
    }
    int main(int argc,char *argv[])
    {
    	test();
    	return 0;
     } 
    // 结果 ch1=a ch2=d
    // 疑问 为啥getchar()不需要传参就能对一个字符串进行操作;
  9. 转义字符:\n 换行    \t 四个空格  ;两个\\输出一个\  两个%%输出一个% 

     '0'-->48, '\0'--->0  "0"字符0的地址

  10. 字符串的输出 %s  printf("%s\n","hello world");   

    1. hello world 10个字符加空间11个字节,而默认\0结尾又占一个字节,所以总共12个字节;"hello world\0"系统会默认在字符\字符串末尾添加一个结束字符 \0;\0 结束标识符;

    2. %s的作用:从字符串的首元素逐个输出,遇到\0就结束;hello\0 woeld ---->hello;
      \0hello----->没有输出

    3. ''单引号表示字符对应的ASCII值,""双引号表示的是字符串首元素在计算机的地址; 

11. typedef类型重定义:

给一个已有的类型重新起一个名字,当现有类型比较复杂时,可以用typedef起个别名;

例如:先存在一个复杂类型unsigned short int a =123;     

                               ---->typedef unsigned short int U16; 前面加上typedef 在取一个别名
                                      U16 a=123;

  1. 已有的类型定义一个变量;
  2. 别名替换变量名;
  3. 在整个表达式的前方加上typedef

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贪财的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值