字符和字符串

字符

当我们定义了一个字符变量 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. RemoteView 替代品和类似软件

    RemoteView 是一款远程控制软件,使您可以通过Internet连接远程访问计算机和移动设备,而不受时间和地点的限制. 您可以快速,安全地实时轻松地控制计算机和移动设备. 您可以使用我们的iOS ...

  2. Istio(三):服务网格istio可观察性:Prometheus,Grafana,Zipkin,Kiali

    目录 一.模块概览 二.系统环境 三.可观察性 四.指标 4.1 代理级指标 4.2 服务级指标 4.3 控制平面度量 五.Prometheus 5.1 安装Prometheus 5.2 部署示例应用 ...

  3. 【BI 可视化插件】怎么做? 手把手教你实现

    背景 对于现在的用户来说,插件已经成为一个熟悉的概念.无论是在使用软件. IDE 还是浏览器时,插件都是为了在原有产品基础上提供更多更便利的操作.在 BI 领域,图表的丰富性和对接各种场景的自定义是最 ...

  4. 如何用 Unity 做出一只赛博宠物

    推荐的一些学习资料 unity 官方文档:Unity 用户手册 (2019.4LTS) - Unity 手册 视频教程:https://www.bilibili.com/video/BV1zB4y1C ...

  5. 使用EntityFramework Core和Enums作为字符串的ASP.NET Core Razor页面——第三部分

    目录 介绍 使用代码 添加项目和项目状态处理 下载源文件 - 989.1 KB 介绍 这是一篇由多部分组成的文章的第三部分,演示了通过EntityFramework Core 2.1(EF)将C#en ...

  6. 使用rem、动态vh自适应移动端

    前言 这是我的 模仿抖音 系列文章的第六篇 第一篇:200行代码实现类似Swiper.js的轮播组件 第二篇:实现抖音 "视频无限滑动"效果 第三篇:Vue 路由使用介绍以及添加转 ...

  7. (JAVA)设计模式-适配器模式

    模式的定义和特点: 适配器模式(Adapter)是一种将一个类的接口转换成客户希望的另外一个接口的设计模式,可以提高代码的复用性和灵活性. 结构与实现: 定义一个适配器类来实现业务接口,再继承现有组件 ...

  8. K-D Tree 总结

    Luogu题单 前置芝士 \(K-D\;Tree\) 例题略解 P2479 [SDOI2010]捉迷藏 大概就是 K-D Tree 的板子题了吧,网上的打法都不太友好,参考了 fengwu 的打法. ...

  9. react减少组件渲染

    当this.setState()修改了state中的数据后,当前组件将重新渲染,同时也会重新渲染子组件,但只会渲染当前组件子树(当前组件以其所有子组件) shouldComponentUpdate 当 ...

  10. 简单易懂的JSON框架

      分享一个由本人编写的JSON框架.   JSON反序列化使用递归方式来解析JSON字符串,不使用任何第三方JAR包,只使用JAVA的反射来创建对象(必须要有无参构造器),赋值,编写反射缓存来提升性 ...