精华内容
下载资源
问答
  • 数据类型 变量名 = 要赋的值 数据类型 变量名 变量名 = 要赋的值 特殊情况 int i, j ; i = j = 5; 如下图 编译后可得: ...在VC6.0上也可以实现,所以在初始化的时候连等也是可以的。 ...

    数据类型  变量名 = 要赋的值

    数据类型 变量名 

    变量名 = 要赋的值

    特殊情况

    int i, j ;  i = j = 5;

    如下图

    编译后可得:

    在VC6.0上也可以实现,所以在初始化的时候连等也是可以的。

    展开全文
  • C语言里面的连等

    2020-12-26 12:22:00
    今天写代码的时候遇到一个困扰我很久的小问题:C里面到底能不能连等? 这样在定义的同时连等,编译出错 Goole一下才知道: 定义的时候不允许连等赋值的时候允许连等

    今天写代码的时候遇到一个困扰我很久的小问题:C里面到底能不能连等?
    在这里插入图片描述
    这样在定义的同时连等,编译出错
    在这里插入图片描述
    Goole一下才知道:
    定义的时候不允许连等,赋值的时候允许连等

    展开全文
  • C语言程序设计2

    2021-03-24 17:31:52
    C语言程序设计2 运算符 用算术运算符将运算对象(也称操作数)连接起来的,符合C语言语法规则的式子,称为算术表达式。 运算对象包括常量、变量、函数 ...赋值运算符(=及其扩展赋值运算符) 条件运算符(? :)

    C语言程序设计2

    运算符

    • 用算术运算符将运算对象(也称操作数)连接起来的,符合C语言语法规则的式子,称为算术表达式。

    • 运算对象包括常量、变量、函数等

      例如:a * b / c - 1.5 + ‘a’

    • C语言常用运算符

      1. 算术运算符(+、-、*、/、%)
      2. 关系运算符(>、<、==、>=、<=、!=
      3. 逻辑运算符(!、&&、||
      4. 位运算符(<<、>>、&、|、~、^
      5. 赋值运算符(=及其扩展赋值运算符
      6. 条件运算符(? :
      7. 逗号运算符(
      8. 指针运算符(*和&)
      9. 求字节数运算符(sizeof(类型或变量))
      10. 强制类型转换运算符((变量或常量))
      11. 分量运算符(. ->
      12. 下标运算符([ ])
      13. 其他(如函数调用运算符())
    • 运算符分类(根据操作数个数分):

      一元(目):+(正)、-(负)、++、–、!

      二元(目):+、-、*、/、%

      三元(目):条件运算符

    知识点1【算术运算符】
    • 注意:(+、-、*、/、%)

      1. % 两边的数值必为整数
      2. 余数的符号与% 前的数字保持一致
      3. *、/ 若操作数都为整数,则结果必为整数。
      void test05()
      {
      	printf("%d\n", 5/2);
      	printf("%d\n", 5%2);
      }
      int main()
      {
      	test05();
      	return 0;
      }
      
      2
      1
      

      案例1

      void test06()
      {
      	int num = 0;
      	//键盘输入一个int数
      	printf("请输入一个整型数据:");
      	scanf("%d", &num);
      
      	//判断是否能被3整除
      	if(num % 3 == 0)
      	{
      		printf("可以被3整除。\n");
      	}
      	else
      	{
      		printf("不能被3整除。\n");
      	}
      }
      int main()
      {
      	test06();
      	return 0;
      }
      
      请输入一个整型数据:15
      可以被3整除。
      

      案例2

      {
      	printf("%d\n", 5/2);//取整
      	printf("%f\n",5/2.0f);
      }
      int main()
      {
      	test07();
      	return 0;
      }
      
      2
      2.500000
      
    知识点2【关系运算符】
    • >、<、==、>=、<=、!=
    知识点3【逻辑运算符】
    • 逻辑非 !、逻辑与 &&、逻辑或 ||

      • ! 取反

      • && 二元运算符(短路特性)

        规则:同真为真 一假则假

        A && B(如果A为假 系统不会执行B 这就是&&的短路特性)

      • || 二元运算符

        规则:同假则假 一真则真

    • 优先级

      • ! > && > ||
      void test08()
      {
      	printf("%d\n", !1);
      	printf("%d\n", !0);
      
      	//C语言 规定 非0表示逻辑真 0为假
      	printf("%d\n", !-1);
      }
      int main()
      {
      	test08();
      	return 0;
      }
      
      0
      1
      0
      

      案例1

      void test09()
      {
      	if((2>3) && (5>4))
      	{
      		printf("ok\n");
      	}
      	else
      	{
      		printf("no\n");
      	}
      }
      int main()
      {
      	test09();
      	return 0;
      }
      
      no
      

      案例2 验证短路特性

      void test10()
      {
      	int num = 10;
      	printf("比较之前num = %d\n", num);
      
      	(2>3) && (num = 10);
      	printf("比较之后num = %d\n", num);
          
          (3>2) || (num = 100);//num = 100不会执行。
          printf("比较之后num = %d\n", num);
      }
      int main()
      {
      	test10();
      	return 0;
      }
      
      比较之前num = 10
      比较之后num = 10
      比较之后num = 10
      
    知识点4【位运算符】二进制位操作
    • &:按位与

      语法:全1为1 其他为0

      位数:7654 3210 (从右向左)

      ​ 1010 1010

      ​ & 1111 0000

      ​ ——————

      ​ 1010 0000

      特点:和1相与 保持不变 和0相与 清零

      应用场景:将固定为 清零

    • |:按为或

      语法:有1就为1 全0才为0

      ​ 1010 1010

      ​ | 1111 0000

      ​ ————————

      ​ 1111 1010

      特点:和0相或 保持不变 和1相或 置1.

      案例:将1010 1010的第2、3为置1 其他为保持不变

      ​ 1010 1010

      ​ | 0000 1100

      ​ ————————

      ​ 1010 1110

      应用场景:将固定为置1

    • ~:按为取反

      语法:0变1 1变0

      ~1010 1010 ==0101 0101

      应用场景:配合&、| 操作

    • ^:按位异或

      语法:相同为0 不同为1

      ​ 1010 1010

      ​ ^ 0000 1111

      ​ ————————

      ​ 1010 0101

      特点:和0异或 保持不变 和1异或 取反。

      应用场景:将固定的为 发生高低电频 翻转。

      案例:将1010 1010 的第0位 发生翻转

      ​ 1010 1010

      ​ ^ 0000 0001

      ​ ————————

      ​ 1010 1011

      ​ ^ 0000 0001

      ​ ————————

      ​ 1010 1010

    • << 左移运算符:左边丢弃 右边补0

      注意:移动的位数 不要 超过自身长度

      1010 1100 << 2

      ​ 10 丢弃<—— |10 1100 <——补 00

    • / >>右移运算符

      1010 1100 >> 2

      ​ 补0**|**——> 1010 11 **| **——> 丢弃 00

      ​ 补1**|**

      • 右移分类:逻辑右移 算术右移

        1. 逻辑右移:右边丢弃 左边补0

        2. 算术右移:

          无符号数:右边丢弃 左边补0

          有符号数:

          • 正数:右边丢弃 左边补0
          • 负数:右边丢弃 左边补1
      • 右移基本上是右边丢弃 左边补0 只有负数且算右移 左边才会补1。

      • 逻辑右移和算术右移 是编译器决定 但是我们可以检测。

        综合案例

        将data的第1、5清0,第3、4位 置1 其他为保持不变

        unsigned char data = 0xaa ;//1010 1010

        用4位二进制数 代替 一位十六进制位

        data = data & 1101 1101;

        第1、5 清0

        1101 1101 = ~(0010 0010) = ~(0010 0000 | 0000 0010)

        0010 0000 = 0000 0001 << 5

        0000 0010 = 0000 0001 << 1

        1101 1101 = ~(0x01 << 5 | 0x01 << 1)

        data = data & ~(0x01 << 5 | 0x01 <<1);

        第3、4位 置1

        data = data | 0001 1000;

        0001 1000 = 0001 0000 | 0000 1000

        ​ = 0x01 << 4 | 0x01 << 3

        data = data | (0x01 <<4 | 0x01 << 3);

    知识点5【赋值运算符】
    • 复合赋值运算符(+=、-=、/=、%=、*=)

      a += b; ==> a = a +b;

      a *= b; ==> a = a * b

      //将 = 右边看做一个整体

      void test13()
      {
      	int data = 3;
      
      	data *= 3+5;
      	printf("data = %d\n", data);
      }
      int main()
      {
      	test13();
      	return 0;
      }
      
      data = 24
      
    知识点6【条件运算符】三元
    • 形式:表达式1?表达式2:表达式3

    • 语法:先计算表达式1,若成立则计算表达式2;若不成立则计算表达式3.

      {
      	int ret = 0;
      	ret = 3>2?5:6;
      
      	printf("ret = %d\n", ret);
      }
      
      ret = 5
      
    • 计算两个整数的最大值

      {
          int a, b, max;
          
          printf("Input a, b:");
          scanf("%d,%d", &a, &b);
          max = a>b ? a : b;
          printf("max=%d", max);
      }
      
      Input a, b:1 5
      max=5
      
    知识点7【逗号运算符】
    • 形式:表达式1, 表达式2 …… 表达式n

    • 运算规则:从左往右依次运算,未用括号括起来则取第一个值,用括号括起来则将最后一个表达式的结果看做整个表达式的结果。

      void test12()
      {
      	int data1 = 0;
      	int data2 = 0;
      
      	data1 = 3, 4, 5, 6;
      	data2 = (3, 4, 5, 6);
      	printf("data1 = %d\n", data1);
      	printf("data2 = %d\n", data2);
      }
      int main()
      {
      	test12();
      	return 0;
      }
      
      data1 = 3
      data2 = 6
      
    知识点7【自增、自减运算符】
    • ++i 或 --i 先加、减 使用

    • i++ 或 i-- 先使用加、减

      void test14()
      {
      	int i = 3;
      	int j = 0;
      
      	j = ++i;
      
      	printf("i = %d\nj = %d\n", i, j);
      }
      int main()
      {
      	test14();
      	return 0;
      }
      
      i = 4
      j = 4
      
      void test15()
      {
      	int i = 3;
      	int j = 0;
      
      	j = i++;//j=i, i=i+1
      
      	printf("i = %d\nj = %d\n", i, j);
      }
      int main()
      {
      	test15();
      	return 0;
      }
      
      i = 4
      j = 3
      
    • i++ 或++i作为单独指令,是没有区别的。

    知识点8【运算符优先级】分析已有的代码
    • 优先级 高 先执行, 同级别的优先级 要看结合性。

    • 运算符的优先级:

      • C语言中,运算符的运算优先级共分为15级。
      • 1级最高,15级最低。
      • 在一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。
    • 各运算符的结合性

      • 左结合性(从左至右):+ - * /

      • 右结合性(从右至左):= ++ –

    优先级别 运算符 运算形式 结合方向 名称或含义
    1 () (e) 圆括号
    [] a[e] 数组下标
    . x.y 成员运算符
    -> p->x 自左至右 用指针访问成员的指向运算符
    2 - + -e 负号和正号
    ++ – ++x或x++ 自增运算、自减运算
    !e 逻辑非
    ~ ~e 按位取反
    (t) (t)e 类型转换
    * *p 指针运算,由地址求内容
    & &x 求变量的地址
    sizeof sizeof(t) 自右至左 求某类型变量的长度
    3 * / % e1*e2 自左至右 乘、除和求余
    4 + - e1+e2 自左至右 加、减
    5 << >> e1<<e2 自左至右 左移、右移
    6 < <= > >= e1<e2 自左至右 关系运算
    7 == != e1==e2 自左至右 等于和不等于
    8 & e1&e2 自左至右 按位与
    9 ^ e1^e2 自左至右 按位异或
    10 | e1|e2 自左至右 按位或
    11 && e1&&e2 自左至右 逻辑与
    12 || e1||e2 自左至右 逻辑或
    13 ? : e1?e2:e3 自右至左 条件运算
    14 = x=e 赋值运算
    += -= *= /= %= >>= <<= &= ^= |= x+=e 自右至左 复合赋值运算
    15 , e1,e2 自左至右 顺序求值运算
    展开全文
  • c语言你知识点总结

    2018-05-15 00:42:54
    常用关键字:if for case break continue while do不能作为用户标识符。 第五节:整数与实数 1)C语言只有八、十、十六进制,没有二进制。但是运行时候,所有的进制都要转换成二进制来进行处理。 a、C语言中的八...
  • c语言运算符和表达式;学习运算符主要掌握以下4点;3.1 算术表达式;整除和求余数的特殊用处;// 连续的---表示前两个是对a的自减最后的-表示减法运算;3.1.2 算术表达式: 用算术运算符和括号将运算对象(也称操作数连接...
  • C语言的运算符按运算类型可分为赋值运算符、算术运算符、逻辑运算符、关系运算符、位运算符、指针运算符和取成员运算符;按运算对象(又称为操作数)的个数又可分为单目运算符、双目运算符和三目运算符。   ...

                                                                        C语言的运算符与表达式


             运算符与表达式

             C语言的运算符又称为操作符,是数据间进行运算的符号。C语言的运算符按运算类型可分为赋值运算符、算术运算符、逻辑运算符、关系运算符、位运算符、指针运算符和取成员运算符等;按运算对象(又称为操作数)的个数又可分为单目运算符、双目运算符和三目运算符。 

           将数据或变量用运算符连接起来,就构成了C语言的表达式。表达式是按照一定规则,将运算对象用运算符连接起来的有意义的式子。表达式中的运算对象可以是常量、变量、函数,也可以是别的表达式。

       

          算术运算、赋值运算与类型转换


           算术运算符与算术表达式

            C语言中的算术运算符包括5个双目运算符:加“+”、减“−”、乘“*”、除“/”、求余(取模)“%”及4个单目运算符:自增“++”、自减“−−”、单目加“+”和单目减(算术取反)“−”,此外还有圆括号“()”运算符,它可以用来改变运算的顺序。

           自增“++”  分为前置++和后置++  前置++是先加1 在用值  后置++ 是先用原值 然后加1;

           自减“--”  分为前置--和后置--  前置--是先减1 在用值  后置-- 是先用原值 然后减1;

           由算术运算符与数值、变量等构成的表达式称为算术表达式。


            赋值运算符与赋值表达式

           

     赋值运算用于改变变量的值。C语言中提供了1个简单赋值运算符“=”和10个复合赋值运算符:+=、−=、      *=、/=、%=、<<=、>>=、&=、^=和|=。


            类型转换运算符

            在表达式中,当混合使用不同类型的数据时,C语言中将对其类型自动进行转换,这种转换一般是“向上”的,即由占存储空间小的数据类型向占存储空间大的数据类型转换。

         逻辑运算符与逻辑表达式

            逻辑运算由逻辑运算符来完成,逻辑运算符共有3个:

             &&    逻辑与

             ||      逻辑或

            !      逻辑非

           逻辑运算的规则如下所示:

           a&& b  /* 只有当a与b的值均为真时,运算结果为真(1),否则为假(0)*/

           a|| b  /* 只有当a与b的值均为假时,运算结果为假(0),否则为真(1)*/

           !a  /* 当a值为真时,结果为假(0);当a为假时,结果为真(1) */

             在与前面学过的其他类型运算符进行比较时,具有如下关系:

            逻辑非!   >   算术运算符  >  关系运算符  >  逻辑与&&  >  逻辑或||  >  赋值运算符 


            条件运算

           条件运算符是唯一的三目运算符,也是C语言中最特殊的运算符。

           条件运算符的使用格式如下:

           表达式1?表达式2:表达式3

           它的含义是指,如果表达式1(条件)结果为真,整个运算的结果为表达式2的值;如果表达式1(条件)结果为假,整个运算的结果为表达式2的值。


          sizeof 运算符

          sizeof运算符用于计算其操作数的大小,即其在内存中所占字节数。 

         


        


         




     


     

          

        

          





    展开全文
  • 例如:0.0,.25,5.789,0.13,5.0,300.,-267.8230均为合法的实数。 2.指数形式 由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。其一般形式为a E n (a为十进制数,n为十进制整数...
  • 对于在C语言中,我们使用指针可以轻而易举的实现字符串的拷贝和连接,在C++中,C在里面是完全兼容的,所以我们就可以在这里大展伸手,开始我们的C++的学习之旅,这篇文章我们实现自定义一个string类,实现字符串的...
  • c语言编写单片机技巧

    2009-04-19 12:15:17
    MCU来说,其内部ROM、RAM、STACK资源都有限,如果使用C语言编写,一条C语言指令编译后,会变成很多条机器码,很容易出现ROM空间不够、堆栈溢出问题。而且一些单片机厂家也不一定能提供C编译器。而汇编语言,一...
  • C语言的科学和艺术.pdf

    热门讨论 2012-01-19 14:09:05
    C语言的科学和艺术》以介绍ANSI C为主线,不仅涵盖C语言的基本知识,而且介绍了软件工程技术以及如何应用良好的程序设计风格进行开发内容。《C语言的科学和艺术》采用了库函数的方法,强调抽象的原则,详细阐述...
  • 你必须知道的495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    *2.5 在C语言中是否有模拟继承面向对象程序设计特性的好方法? 2.6 为什么声明externf(structx*p);给我报了一个晦涩难懂的警告信息? 2.7 我遇到这样声明结构的代码:structname{intnamelen;charnamestr[1];}...
  • 三子棋又叫做井字棋、圈圈叉叉、一条龙。将正方形对角线起来,相对两边依次摆上三个双方棋子,只要将自己的三个棋子连成一条线,就算赢得游戏。但是很多时候也会出现和棋的情况。 二、思路步骤 用C语言编写三子...
  • 难道在C语言中一个结构不能包含指向自己的指针吗? o 2.7 怎样建立和理解非常复杂的声明?例如定义一个包含 N 个指向返回指向字符的指针的函数的指针的数组? o 2.8 函数只定义了一次, 调用了一次, 但编译器提示...
  • 它说明了一个标准库和一个完成输入输出、内存管理和字符串操作类似任务的函数集扩充。此标准明确地说明了原始定义没有指出的一些特性的行为。同时,此标准还明确地说明了语言中的哪些部分依然依赖于机器。《C程序...
  • 1. C语言简单子集 C语言简单子集具有如下特点: 1) 数据类型 仅支持简单数据类型中的有符号2字节整型(使用16位汇编实现,因此int回归到古老的16位)。 2) 数据操作 ...不支持连等、逻辑运算时的赋
  • 《你必须知道的495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    *2.5 在C语言中是否有模拟继承面向对象程序设计特性的好方法? 22 2.6 为什么声明extern f(struct x *p); 给我报了一个晦涩难懂的警告信息? 23 2.7 我遇到这样声明结构的代码:struct name {int namelen; ...
  • } } //给 P3_1 赋值 1,引脚 P3.1 就能输出高电平 VCC //给 P3_1 赋值 0,引脚 P3.1 就能输出低电平 GND //非零表示真,如果为真则执行下面循环体的语句 //void 表示没有输入参数,也没有函数返值,这入单片机运行...
  • Horton拥有丰富的教学经验(教学内容包括C、C++、Fortran、PL/1、APL),同时还是机械、加工和电子CAD系统、机械CAM系统和DNC/CNC系统方面的专家。IvorHorton还著有关于C、C++和Java的多部入门级好书,如《C语言入门...
  • *2.5 在C语言中是否有模拟继承面向对象程序设计特性的好方法? 22 2.6 为什么声明extern f(struct x *p); 给我报了一个晦涩难懂的警告信息? 23 2.7 我遇到这样声明结构的代码:struct name {int namelen; ...
  • 《明解C语言 第3版 入门篇》图文并茂,示例丰富,第3版从190段代码和164幅图表增加到205段代码和220幅图表,对C语言的基础知识进行了彻底剖析,内容涉及数组、函数、指针、文件操作。对于C语言语法以及一些难以...
  • 你必须知道的495个C语言问题(PDF)

    热门讨论 2009-09-15 10:25:47
    2.5 在C 中是否有模拟继承面向对象程序设计特性的好方法? . . . 7 i 目录ii 2.6 我遇到这样声明结构的代码: struct name f int namelen; char namestr[1];g; 然后又使用一些内存分配技巧使namestr 数组用起 来...
  • 1.4.5 赋值运算符 17 1.4.6 递增与递减运算符 19 1.4.7 布尔运算符 20 1.5 语句 22 1.5.1 简单语句 22 1.5.2 块 22 1.5.3 if语句 23 1.5.4 switch语句 23 1.5.5 while语句 25 1.5.6 for语句 28 1.6 函数 ...
  • C语言可以连等赋值 ?:运算符:条件运算符 ?前是判断。 是的话选引号前面的, 不是选引号后面的   Switch switch(grade)  {  case 'A' :  printf("很棒!\n" );  break; ...
  • 按照不同功能区分,运算符可以分为:算术运算符、字符串运算符、赋值运算符、位运算符、条件运算符,以及逻辑运算符。当各种运算符在同一个表达式中时,它们的运算是有一定的优先级的。(1)算术运算 + -  * ...

空空如也

空空如也

1 2 3 4 5
收藏数 88
精华内容 35
关键字:

c语言连等赋值

c语言 订阅