字符和字符串

字符

当我们定义了一个字符变量 c 为a时,打印的时候让它使整数形式显示。会出现怎么一个情况?

#include<stdio.h>

int main(){
char c = 'a';
printf("c show number is %d \n",c);
return 0;
}
c show number is 97

当定义变量使用char类型时,把它赋值给数字,会出现什么情况?

#include<stdio.h>

int main(){
char a = 97,b = 98,c = 99;
printf("%c,%c,%c \n",a,b,c);
return 0;
}
a,b,c

声明字符会参照ASIIC 码进行转换。当以字符形式显示,就会显示表中对于的字符显示。当以整数形式显示,就会参照表中定义的数字形式显示。

  • 当然 char 类型也有取值范围,当超过取值范围,就会出现异常显示。
#include<stdio.h>
int main(){
char a =180 ,b = 190,c = 300;
printf("a:%d \n",a);
printf("b:%d \n",b);
printf("c:%d \n",c);
return 0;
}
test3.c: In function ‘main’:
test3.c:4:2: warning: overflow in implicit constant conversion [-Woverflow]
char a =180 ,b = 190,c = 300;
^
a:-76
b:-66
c:44

在定义char类型的时候,根据编辑器默认加上signedunsigned,由于编辑器的不同。所以 char 的取值范围不同,signed char取值范围为-128~127,而unsigned char取值范围为0~255

字符串

在 c 语言中,字符串就是一串字符,所以没必要新定义一个字符串类型。只需要在内存中找一块连续的空间来存储字符串即可。

  • 声明字符串
# char 标识符[长度|可不写];
char c[6]; # char 标识符[长度|可不写]= {*,*,*,*}; char c[6]= {'h','e','l','l','o','\0'};
  • 字符串赋值
c[0] = 'h';
c[1] = 'e';
c[2] = 'l';
c[3] = 'l';
c[4] = 'o';
c[5] = '\0';
#include<stdio.h>
int main(){
char c[]= {'h','e','l','l','o','\0'};
printf("c is %s\n",c);
printf("world");
return 0;
}
hello
world

运算符

算数运算符

双目:+,-,*,/,%.

单目:+,-.

什么是目?目取决于操作数,符号需要连接两个操作数的叫双目运算符。连接一个操作数叫单目运算符。

  • /

整数/整数 = 整数(小数点会被舍弃)

浮点数/浮点数 = 浮点数

  • % 求余

当浮点数求余时会发生报错。

#include<stdio.h>

int main(){
double a = 5.2 % 3.0;
printf("a is %f\n",a);
return 0;
}
test5.c: In function ‘main’:
test5.c:4:17: error: invalid operands to binary % (have ‘double’ and ‘double’)
double a = 5.2 % 3.0;
^

表达式

用于运算符和括号将操作数连接起来的式子。

运算符优先级

int main(){
int i ,j ,k;
i = 1 + 2;
j = 1 + 2 * 3;
k = j + j + -1 + pow(2,3);
printf("i is %d\n",i);
printf("j is %d\n",j);
printf("k is %d\n",k);
return 0;
}
i is 3
j is 7
k is 21

类型转换

为了确保计算的精度,默认以操作数类型占用内存较大的为基础,其余不同类型会转换成占用内存较大的数据类型,然后进行运算,结果也为占用内存较大的数据类型。

  • 例如:
1 + 1.5 = 1.0 + 1.5 = 2.5
#include<stdio.h>
int main(){
printf("整型输出:%d\n", 1 + 2.0);
printf("浮点型输出:%f\n",1 + 2.0);
return 0;
}
整型输出:-1131816200
浮点型输出:3.000000

强制类型转换

在操作数前+(类型)即可。

#include<stdio.h>
int main(){
printf("整型输出:%d\n", 1 + (int)2.0);
printf("浮点型输出:%f\n",1 + 2.0);
return 0;
}
整型输出:3
浮点型输出:3.000000

浮点类型转换 int 类型,会直接把小数点后面的数直接省略。而不是四舍五入。

关系运算符

用关系运算符将两边的变量、数据或表达式连接起来,称之为关系表达式。(有返回值)

int a = 1,b = 0;
1 < 2 // int 1
a < b // int 0
a <= b // int 0
'a' + 'b' <= 'c' // int 0
(a=5) < (b = 10) // int 1

逻辑运算符

  • !:逻辑非,取反,单目运算符
  • &&:逻辑与,全为真才为真
  • ||:逻辑或,有一个为真就为真
#include<stdio.h>

int main(){
int a = 5,b=3;
printf("%d \n",!a);
printf("%d \n",a>b);
printf("%d \n",!(a+b));
printf("%d \n",!0 + 1 < 1 || !(3+4));
return 0;
}
0
1
0
0
  • 短路

&&前面的值为假 或者 当||前面的值为真 会忽略后面的表达式。

c 语言学习第三天的更多相关文章

  1. Go语言学习笔记三: 常量

    Go语言学习笔记三: 常量 定义常量 常量就是在声明后不能再修改的量. const x int = 100 const y string = "abc" const z = &qu ...

  2. C 语言学习 第三次作业总结

    本次作业内容: For循环的使用 If判断语句的使用 常用数学运算表达式的使用 数学函数库中几个常见函数的使用及自我实现 将操作代码提交到coding 作业总结: For循环是C语言中一种基本的循环语 ...

  3. 【GO】GO语言学习笔记三

    7.数组: 几乎是最常用的数据类型了... 数组就是指一系列同一类型数据 的集合.数组中包含的每个数据被称为数组元素(element),一个数组包含的元素个数被称为数 组的长度. 常规的数组声明方法: ...

  4. C语言学习第三章

    写在课前,提醒自己写代码的时候一定要注意不能漏写符号!提醒自己写代码的时候一定要注意不能漏写符号!提醒自己写代码的时候一定要注意不能漏写符号! 今天主要学习掌握if...else条件结构,多重if条件 ...

  5. Go语言学习笔记(三) [控制结构、内建函数]

    日期:2014年7月21日   一.控制结构   1.Go中,只有几个控制结构,它没有do或者while循环,有for,灵活的switch语句和if,在switch中可以接受像for那样可选的初始化语 ...

  6. R语言学习 第三篇:数据框

    数据框(data.frame)是最常用的数据结构,用于存储二维表(即关系表)的数据,每一列存储的数据类型必须相同,不同数据列的数据类型可以相同,也可以不同,但是每列的行数(长度)必须相同.数据框的每列 ...

  7. Swift语言学习(三)基础操作符

    操作符是用于检测.更改或者组合值的特殊符号或短语.例如,加法操作符 (+) 将两个数字加到一起 (如 let i = 1 + 2).更复杂的例子包括逻辑与操作符 && (如 if en ...

  8. c语言学习笔记三

    第三章,函数 字符串函数 //strcmp int my_strcmp(char *str1,char *str2) {   while(*str1 = = *str2)   /*不可用while(* ...

  9. C语言学习总结(三) 复杂类型

    第五章.复杂数据类型 (数组.字符串.指针.结构体.枚举.共同体) 1.什么是数组? 概念:把具有相同类型的若干变量按有序的形式组织起来,这些按序排列的同类数据元素的集合称为数组: 按数组元素的类型不 ...

  10. [C语言学习笔记三]格式化输出和输入

    使用 printf 函数来输出,使用 scanf 函数来输入 在 printf 函数中使用变量,需要使用占位符代替. int 型一般存储整数,使用 %d 代替 long long int 型一般存储长 ...

随机推荐

  1. 2024-05-15:用go语言,考虑一个整数 k 和一个整数 x。 对于一个数字 num, 在其二进制表示中, 从最低有效位开始, 我们计算在 x,2x,3x 等位置处设定位的数量来确定其价值。

    2024-05-15:用go语言,考虑一个整数 k 和一个整数 x. 对于一个数字 num, 在其二进制表示中, 从最低有效位开始, 我们计算在 x,2x,3x 等位置处设定位的数量来确定其价值. 举 ...

  2. linux file命令查看文件类型

    在linux系统中,linux是不根据后缀名识别文件类型的,所以使用file命令查看文件的类型. [root@node5 ~]# file /etc/shadow /etc/shadow: ASCII ...

  3. 查看浏览器对html5的支持情况

    http://html5test.com/   视频和音频代码检测 function CheckAudio(){ var myAudio=document.createElement("au ...

  4. IceRPC之深入理解调度管道->快乐的RPC

    作者引言 很高兴啊,我们来到了IceRPC之深入理解调度管道->快乐的RPC,为上篇的续篇,深入理解常见的调度类型, 基础引导,有点小压力,打好基础,才能让自已不在迷茫,快乐的畅游世界. 传入请 ...

  5. Vue cli之传递数据

    1.父组件的数据传递给子组件 // 父组件 <Menu title="来自Home的数据" :clickNum="num"></Menu> ...

  6. Vue cli之使用Vue-CLI初始化创建前端项目

    1.生成项目目录 使用vue自动化工具可以快速搭建单页应用项目目录. 该工具为现代化的前端开发工作流提供了开箱即用的构建配置.只需几分钟即可创建并启动一个带热重载.保存时静态检查以及可用于生产环境的构 ...

  7. 蓝屏rtux64w10.sys

    蓝屏rtux64w10.sys 环境: WIN10 +  Realtek USB RTL8156B 2.5G网卡 表现: 局域网复制时,间隔性速度变为0,多次后,最终蓝屏. 解决方法: 更新驱动. 地 ...

  8. idea 中的 jrebel

    1.打开idea设置 ,下载 jrebel 2搜索下载jrebel 3.重启之后,在右下角有个弹窗,这时候选择enable,然后右边的侧边栏工具会弹出一个界面,总共应该有4步,第一步是展开的,点击蓝色 ...

  9. TiKV 源码分析之 PointGet

    作者:来自 vivo 互联网存储研发团队-Guo Xiang 本文介绍了TiDB中最基本的PointGet算子在存储层TiKV中的执行流程. 一.背景介绍 TiDB是一款具有HTAP能力(同时支持在线 ...

  10. C#开发的NoteNet桌面小贴士 - 开源研究系列文章 - 个人小作品

    十多年前编写过这个NoteNet小应用,不过当时用的是文本的保存方式,而且功能上也相对较多.这次重新编写这个小应用,用上新的技术和功能.现在先把源码发布出来,在另个系列的博文中( C#基于.net f ...