一些C语言的小问题

1.C语言中 unsigned char和unsigned int的区别

一个是无符号的字符。

一个是无符号的整数。

1.你定义一个char   a和unsigned   char   a,然后被他们都赋个-1试试。   
  第一个的值打印出来就是-1,第二个的值打印出来就是255。 他们的取值范围不同,char是-127~128,unsigned   char是0~255,如果不进行数字相关的操作,是否unsigned的关系倒不大。但如果用于计算则应当小心符号的问题

 

char 是有符号的 unsigned char 是无符号的,里面全是正数两者都作为字符用的话是没有区别的,但当整数用时有区别: char 整数范围为-128到127( 0x80__0x7F),   而unsigned char 整数范围为0到255( 0__0xFF )

 

2. unsigned int 和int

一个有符号和一个无符号,数值的大小不一样,这个的我要回去再跟你说

unsigned char只占1个字节内存

unsigned int占4个字节

这个问题,要是简单的理解,是很容易的,不过要是考虑的深了,还真有些内涵,一言难以,我给你说一下要点吧。

无符号数是针对二进制来讲的

在C语言中,大多数数字默认都使有符号的。

实际上有没有符号是机器层面的问题(即数值在机器中如何表示的问题,如原码、反码、补码表示法),因为C把机器层面的大多数的东西都反应了出来,像这个有没有符号的问题就是一例,是C的难点之一,建议你好点把握。

简单的说,计算机用二进制表示数值时用最高位来代表该值的符号,最高位为1时负数,最高位为0是正数,例如以8字节字长为例:

00000001表示十进制1

10000001表示十进制-1

因为占了一个最高位表示符号,这样的话有符号数表示的正数范围就小些,表示范围是有符号数和无符号数最大的区别。

 

首先看int和char,分别是整型数据和字符型数据,在计算机里面分别占1个和2个字节空间(TC环境),不同的环境占得字节数可能不同;

unsigned int是一个无符号整型数据,而unsigned char则是无符号字符型数据,他们在计算机里所占字节数和int,char完全一样;

区别在于unsigned int 与int ( = signed int)型数据范围不同,无符号型数据没有正负之分,而带符号数因为需要用一个数据位存放符号位,所以范围要比无符号数据小,这样,你就能知道unsigned char 和char的区别了!我顺便说一下这四个数据类型各自的范围吧!

int (= signed int)    -32768 ~ +32767

unsigned int    0 ~ 65535

char (=signed  char)   -128 ~ +127   
unsigned  char     0~255

2.编写一个判断月份日数的函数,注意闰年的判断方法













3.修改修饰为const的变量





类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变。

在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于改变数据成员的成员函数不能加 const。


在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值