• C语言学习笔记(十四)


    C语言学习第14天

    2.4 声明
    所有变量都必须先声明后使用,一个声明指定一种变量类型,后面所带的变量表可以包含一个或多个类型的变量。例如

    int lower, upper, step;
    char c, line[1000];

    一个声明语句中的多个变量可以拆开在多个声明语句中声明。上面两个声明语句可以写成

    int lower;
    int upper;
    int step;
    char c;
    char line[1000];

    按照这种形式书写代码需要占用较多空间,但便于向各声明语句中添加注释,也便于以后修改。
    还可以在声明的同时对变量进行初始化。在声明中如果变量名的后面紧跟一个等号以及一个表达式,该表达式就充当对变量进行初始化的初始化表达式。例如:

    char esc = '\\';
    int i = 0;
    int  limit = MAXLINE + 1;
    float eps = 1.0e-5;

    如果变量不是自动变量,则只能进行一次初始化操作,从概念上讲,应该是在程序开始执行之前进行,并且初始化表达式必须为常量表达式。每次进入函数或程序块时,显示初始化的自动变量都将被初始化一次,其初始化表达式可以时任何表达式。默认情况下,外部变量与静态变量将被初始化为0.未经显式初始化的自动变量的值为为定义值(即无效值)。
    任何变量的声明都可以使用const限定符限定。该限定符指定的变量的值不能被修改。对数组而言,const限定符指定数组所有元素的值都不能被修改。

    const double e = 2.71828172845905;
    const char msg[] = "warning: ";

    const限定符也可以配合数组参数使用,它表明函数不能修改数组元素的值:

    int strlen(const char[]);

    如果试图修改const限定符限定的值,其结果取决于具体实现。

    ______________________________________________________________
    #include

    int main()
    {
        const int a = 1;
        a = 2;
       return 0;
    }

    编译结果:
    test.c:10:2: 错误:向只读变量‘a’赋值
      a = 2;

    —————————————————————————————————
    #include

    int main()
    {
        const char a[] = "warning: ";
        a [0]= 2;
       return 0;
    }

    编译结果:
    test.c:6:2: 错误:向只读位置‘a[0]’赋值
      a [0]= 2;

    ______________________________________________________________
    #include

    int change(const char[]);

    int main()
    {
        const char a[] = "warning: ";
        change(a);
       return 0;
    }

    int change(const char s[]) {
        s[0] = 'a';
        return 0;
    }

    编译结果:
    test.c:13:2: 错误:向只读位置‘*s’赋值
      s[0] = 'a';

    —————————————————————————————————

    2.5 算术运算符
    二元算术运算符包括: +、-、*、/、%(取模运算符)。整数除法会截断结果中的小数部分。表达式

    x % y

    的结果是x除以y的余数,当x能被y整除时,其值为0.例如,如果某一年的年份能被4整除但不能被100整除,那么这一年就是闰年,此外,能被400整除的年份也是闰年。如下:

    if ((year % 4 == 0 && year % 100 != 0) || year % 400)
        printf("%d is a leap year\n", year);
    else
        printf("%d is not a leap year\n", year);

    取模运算符%不能应用于float或double类型。
    二元运算符+和-具有相同的优先级,他们的优先级比运算符*、/和%的优先级低,而运算符*、/和%的优先级又比一元运算符+和-的优先级低。算术运算符采用从左到右的结合规则。

    2.6 关系运算符与逻辑运算符
    关系运算符包括下列几个运算符:

    >   >=    <     <=

    他们具有相同的优先级。优先级仅次于他们的时相等性运算符:

    ==    !=

    关系运算符的优先级比算术运算符低。因此,表达式 i < lim-1 等价于 i < (lim -1).

    逻辑运算符&&与||有一些较为特殊的属性。由&&与||连接的表达式按从左往右的顺序进行求值,并且,在知道结果值为真或假后i立即停止计算。绝大多数C语言程序运用了这些特性。例如:

    for (i = 0; i     if(c != EOF) {
          s[i] = c;
        } else {
          break;
        }
      } else {
        break;
      }
    }

  • 相关阅读:
    TP 5.0.24反序列化漏洞分析
    【ODOO】Docker Compose 编排ODOO应用
    Java-day15(Java常用类)
    java: 警告: 源发行版 17 需要目标发行版 17
    语义分割实战:基于tensorflow搭建DeeplabV3实现语义分割任务
    nodejs+vue音乐网站与分享平台
    暑假到了,如何有效保护眼睛?盘点保护视力的护眼台灯
    开发一个app,需要申请哪些,费用是多少?
    模型工厂,让AI算法触手可达 | StartDT Tech Lab 05
    藏在超级应用背后的逻辑和哲学
  • 原文地址:https://blog.csdn.net/u014360189/article/details/128088583