C语言之常量与变量

1.第一个C程序

#include<stdio.h>
int main()
{
    //printf("abcdefg");
    printf("hello");
    /*printf('c');
    printf("program");*/
    return 0;
}

(1)必须定义入口点(main函数),有且仅有一个

(2)mainret = main(argc, argv, envp) main函数有返回值(返回值为int型),所以用int main(),而不是void main()

(3)主函数中返回0

(4)printf函数是格式化的输出语句

(5)//C++的注释风格

        /* */C语言注释风格,不支持嵌套

(6)"hello" 字符串

          ‘c’ 字符

(7)字符串的结束标志:\0

#include<stdio.h>
int main()
{
char arr[3] = {'a', 'b', 'c'};
printf("%s\n",arr);
return 0;
}

 arr中没有给定字符串结束标志“\0”

2.转义字符

int main()
{
    printf("(Are you ok??)   ");
    printf("(Are you ok\?\?)");
    return 0;
}

输出:Are you ok]    Are you ok??

三字母词:就是几个字符的序列,合起来表示另一个字符。三字母词可以使C环境在某些缺少一些必备字符的字符集上使用。

三字母词表示字符
??([
??)]
??<{
??>}

转义字符:

转义字符释义
\?在书写连续多个问号时使用,防止它们被解析为一个转义序列符
\'用于表示字符常量‘
\"用于表示一个字符串内部的双引号
\\用于表示一个反斜杠,防止它被解释为一个转义序列符
\a警告字符,蜂鸣
\b退格符
\f进纸符
\n换行
\r回车
\t水平制表符
\v垂直制表符
\dddddd表示1~3个八进制的数字
\xdddddd表示3个十六进制的数字
#include <stdio.h>
int main()
{
    printf("%d\n", strlen("abcdef"));
    printf("%d\n", strlen("c:\test\32\test.c"));
    return 0;
}

输出:6        13(32算一个字符)

3.数据类型

char 字符数据类型

short 短整型

int 整型

long 长整型

long long 更长的整型

float 单精度浮点型

double 双精度浮点型

#include<stdio.h>
int main()
{
    char c = 'w';
    int i = 0;
    short s = 0;
    long l = 0;
    long long ll = 0;
    float f = 0.0;
    double d = 0.0;
    
    printf("%d\n", sizeof(c));  //1
    printf("%d\n", sizeof(i));  //4
    printf("%d\n", sizeof(s));  //2
    printf("%d\n", sizeof(l));  //32平台上为4,64位平台上为8
    printf("%d\n", sizeof(ll)); //8
    printf("%d\n", sizeof(f));  //4
    printf("%d\n", sizeof(d));  //8
    return 0;
}

4.变量与常量

(1)变量

       char a = 'q';

       int n = 100;

       float w = 65.4

   a, n, w 都是不同类型的变量

  变量命名规则:

     C语言规定必须以字母或下划线开头,后面可以跟若干个字母、数字、下划线,但变量名不能是关键字。推荐《高质量C++编程》。

     first_name FirstName

(2)常量

    a. 字面常量

       ‘q', 3.14, '1', '\n'

    b. const定义的常量

#include<stdio.h>
int main()
{
    int num = 5;
    const int c_num = 5;
    num = 20;
    c_num = 20;//此行发生错误
    return 0;
}

       在C语言中,当const修饰一个标识符时,这个标识符依然是一个变量,但是它具有常属性,不能被直接改变。arr[c_num]是非法的。然而在C++中,const修饰的标识符就是常量,arr[c_num]合法。

    c. #define定义的标识符常量

#include<stdio.h>
#define PAI 3.14
#define MAX 10
int main()
{
    int radius = 0;//半径
    double area = PAI * radius * radius;  //圆面积
    arr[MAX] = {0};  //合法
    return 0;
}

    d. 枚举常量

      枚举关键字:enum

      枚举的优势:

      增加程序的可读性;

      提供有限个选项,避免因错误输入其他信息,从而规范了程序的有效执行性。

#include<stdio.h>
enum Sex
{
    MALE,
    FEMALE,
    SECRET
};
int main()
{
    printf("%d\n", MALE);   //0
    printf("%d\n", FEMALE); //1
    printf("%d\n", SECRET); //2
    enum Sex sex = MALE;
}

      枚举默认从0开始,依次递增。枚举常量是常量,不能被修改。

5.volatile

#include<stdio.h>
int main()
{
    char a = 1;
    char *p1 = &a;
    const int num = 10;
    int *p = (int *)&num;
    *p = 20;  //(解引用操作)内存里的num已经变为20了
    printf("%d\n", num);
    return 0;
}

       vs输出10,const定义的num被放在了寄存器里,即使内存里的num已经被改变了,但仍输出寄存器里的num(编译器遗留化) 。

       定义变量时加关键字volatile以保证内存的可见性(volatile const num = 10;)。

6.变量的分类

    变量根据出现的位置可分为局部变量和全局变量。

        在代码块之内的变量为局部变量,代码块之外的变量为全局变量;

        当局部变量和全局变量冲突时使用局部变量;

        全局变量的作用域在整个工程。

    static修饰局部变量,变量生命周期变长。

#include<stdio.h>
void test()
{
    int a = 1;
    a++;
    printf("%d ", a);
}
int main()
{
    int i = 0;
    for(i=0; i<10; i++)
    {
        test();
    }
    return 0;
}

    输出2 2 2 2 2 2 2 2 2 2

    若在test函数中用static修饰变量a,则输出2 3 4 5 6 7 8 9 10 11

7.printf小知识

#include<stdio.h>
int main()
{
    printf("%d\n", printf("%d", printf("%d", 43)));
}

    输出:4321

    printf("%d", 43)返回2(2个字符)。

    printf函数可以有很多个参数 :  

#include<stdio.h>
int main()
{
    printf("love\n");
    printf("%s", "love\n");
    printf("%c%s", 'l', "ove");
}

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值