首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言笔记】关于有符号数与符号数的一些总结

有、符号数之间的运算 有符号数与符号数之间的运算,编译器会进行隐式类型转换。...b转换成为一个符号数,即此处a+b等价于a+(unsigned int)b。...C 语言按照一定的规则来进行此类运算的转换,这种规则称为正常算术转换,转换的顺序为: double>float>unsigned long>long>unsigned int>int 即操作数类型排在后面的与操作数类型排在前面的进行运算时...有、符号数转化为更大类型 请看如下代码: #include int main(void) { //情况一 signed char c1 = 0xff; unsigned...以上就是关于有符号数与符号数的两点总结:(1)有符号数与符号数之间的运算,编译器会进行隐式类型转换。(2)有符号数、符号数转换为更大的数据类型。

3.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

C++ 中有符号类型到符号类型的转换

c 的值赋给 d 后输出,得到 d = 246,即给 c 变量赋值 -10 后,它的值变为 246,这是为什么呢?...这是由于当我们给一个符号类型赋一个 负值 时,其结果是我们所赋的值与这个符号类型能表示的数的总个数的和,即 d = -10 + 256,这样一来结果当然是 246 了,显然 246 是在此符号类型所能表示的数的范围内的...实际上,当我们赋给一个符号类型一个超出它表示范围的 正值 时,结果是将我们所赋的这个值对此符号类型所能表示的数的总个数取模后的余数,即 258 % 256 = 2,符合程序运行结果   ( 三 )、...这是因为 这个表达式中符号数大于有符号数,此种情形下,当把一个有符号类型和符号类型相加时,需要先将有符号类型的数转换为符号类型的数后再进行加法运算,(一)(二)中已经详细说明了怎样将一个有符号类型的数转换为一个符号类型的数...10 ) ,得 4294967264 ,符合最后得到的程序运行结果,关于这部分内容详见我的博客 C++ 符号类型的运算对象参与的类型转换  最后我们还需要另外强调的一点是,  当我们给带符号类型赋予一个超过其表示范围的值时

1.3K00

C语言中的强符号和弱符号

链接的核心是符号的重定位,在符号引用的地方找到符号定义的地方,包括函数产生的符号和全局变量产生的符号。 强符号:函数和初始化的全局变量所生成的符号。 弱符号:未初始化的全局变量所生成的符号。...//a.c int gdata = 10; //b.c int gdata = 20; #include int main(){ printf("gdata = %d\n",gdata...); return 0; } 这是很多新手容易犯的错误,若将a.c或b.c中全局变量gdata只初始化一次,则不会出现链接错误,并且会链接成功。...一个有趣的小例子再看强弱符号: //a.c int x; void func(){ x = 20; } //b.c #include short x = 10; short y...源文件是独立进行编译的 //a.c int x;//弱符号 void func(){ x = 20; //往x的内存上写20,写4个字节 编译阶段就完成的 } //b.c #include<

1.5K20

数字IC笔试题(6)——C语言符号数和符号数【原码、反码、补码】【格式转换】

(数字IC中,对C语言的考察比较多,输入输出/进制转换/文件读写等) unsigned char a = -1, char b = 44, int c =a+b 以上程序运行后,c=() 答案:299...解析: 【有符号+符号】,按照2个都是符号算。...除了加法外,只要运算中存在有符号操作数和符号操作数混用,都是将操作数转成符号算。...(1)unsigned char a = -1,8位补码表示-1,首先用7-bit表示1,000_0001,取反后111_1110,加1后111_1111,加上符号位1111_1111,如果用这个8位的二进制数来表示符号数...,为255; (2)char b = 44,本身就是正数,有符号中正数的原码、反码、补码相同,所以转成符号数还是 44; (3)加法自动扩展成int去算,255+44=299;

1.2K10

重复字符的最长子串(C语言

重复字符的最长子串(C语言) 一、题目描述 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。...示例 2: 输入: s = “bbbbb” 输出: 1 解释: 因为重复字符的最长子串是 “b”,所以其长度为 1。...提示: 0 <= s.length <= 5 * 104 s 由英文字母、数字、符号和空格组成 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems...二、解题思路 1、使用count记录重复子串的长度 2、start记录当前子串起始位置下标 3、max记录最大子串长度 4、使用index的值记录当前字符字符串中的位置坐标 5、遍历字符串...s 6、若字符重复字符,返回count,即当前字符串长度 7、若有重复字符,则改变子串起始位置start的值为当前字符上一次出现的位置下标 8、比较count与max的值,记录最大子串长度。

37410

c语言字符数据类型关键字_字符系统数据类型主要包括

字符数据类型就是字符 1、字符数据的表示 字符数据是用单引号括起来的一个字符。例如: ‘a’、’b’、’=’、’+’、’?’都是合法字符数据。...在C语言中,字符数据有以下特点: 字符数据只能用单引号括起来,不能用双引号或其它括号。 字符数据只能是单个字符,不能是字符串。 字符可以是字符集中任意字符。...但数字被定义为字符之后就不能参与数值运算。如’5’和5 是不同的。’5’是字符数据,不能参与运算。 转义字符 转义字符是一种特殊的字符。转义字符以反斜线”\”开头,后跟一个或几个字符。...#include int main(void) { chara,b; a=120; b=121; printf("%c,%c\n",a,b);...例如,字符串 “C program” 在内存中所占的字节为:10个字节 字符’a’和字符串”a”虽然都只有一个字符,但在内存中的情况是不同的。

71920

C语言字符函数

字符分类函数 C语言中有一系列的函数是专门做字符分类的,也就是一个字符是属于什么类型的字符的。这些函数的使⽤都需要包含一个头文件是ctype.h。...小写字母a~f,大写A-F islower 小写字母a-z isupper 大写字母A-Z isalpha 字母a-z或者A-Z isalnum 字母或数字,a-z,A-Z,0-9 ispunct 标点符号...2.4 将字符串中的小写字母转大写 我们知道在C语言中‘A’(65)与‘a’(97)相差32,‘B’与‘b’也相差32,就是说大小写字母相差32。...include #include #include int main() { char arr[] = "abcdef"; //a b c...字符转换函数 1.int tolower ( int c ); //将参数传进去的大写字母转小写 2.int toupper ( int c ); //将参数传进去的小写字母转大写 上面的代码,我们将小写转大写

10110

C语言每日一题(38)重复字符的最长字串

力扣 3 重复字符的最长字串 题目描述 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。...示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为重复字符的最长子串是 "abc",所以其长度为 3。...示例 2: 输入: s = "bbbbb" 输出: 1 解释: 因为重复字符的最长子串是 "b",所以其长度为 1。...示例 3: 输入: s = "pwwkew" 输出: 3 解释: 因为重复字符的最长子串是 "wke",所以其长度为 3。...提示: 0 <= s.length <= 5 * 104 s 由英文字母、数字、符号和空格组成 思路分析 关于这道题用滑动窗口的思想来做的话会非常麻烦,既要考虑最长的字串长度,同时还要保证不出现重复字符

13010

C语言 | 字符数组

C语言字符数组的定义 字符数组是用来存放字符数据的数组,字符数组中的一个元素存放一个字符,定义字符数组的方法和定义数值数组的方法类似。...//例子: char character[10]; C语言字符数组的初始化 C语言字符数组初始化,最容易理解的方式是用“初始化列表”,把各个字符依次赋给数组中各元素。...C语言字符串和字符串结束标志  在C语言中,是将字符串作为字符数组来处理的,字符串中的字符是逐个存放到数组元素中的。...为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”,以字符‘\0’作为结束标志。 C系统在用字符数组存储字符串常量时会自动加一个'\0'作为结束符。...100道C语言源码案例请去公众号:C语言入门到精通

5.9K40

C语言符号-取余取模运算

printf("%d\n", i); //结果是:-2 printf("%d\n", j); //结果是:2 return 0; } 注:运行结果并不是像我们想的四舍五入数学取整,在C语言中本质是向...return 0; } 对于负数取模 示例: int main() { int a = -10; int d = 3; printf("%d\n", a/d); //C语言中是...-3,python是-4 printf("%d\n", a%d);//C语言中是-1,python是2 return 0; } 为什么就有差异了呢?...对任何一个大于0的数,对其进行0向取整和-∞取整,取整方向是一致的,故取模等价于取余 对任何一个小于0的数,对其进行0向取整和-∞取整,取整方向是相反的,故取模不等价于取余 结论: 两个同符号数据参与取余...,取模等价于取余,不同语言余数相等 两个不符号数据参与取余,取模不等价于取余,余数大小需考虑语言取整规则

3.1K40
领券