C语言相关(二)

数据类型

数据以程序运行期间是否改变或被赋值分为 变量常量。
       
       以计算机中的存储方式分为两大基本类型 整数类型浮点数类型,字符布尔类型也被包括于整数类型。

基本类型关键字:
       C90之前: int    short    long    unsigned    char    float    double 
       C90新增: signed    void(空类型)  
       C99新增: _Bool(布尔类型)      _Complex(复数类型)      _Imaginary(虚数类型)  

字节
       描述计算机存储单元的术语。
        位 (bit):最小存储单元,存储0或1(用于设置开关),计算机内存基本构建块。
        字节 (byte):1字节为8位(几乎所有机器),2^8种组合表示0~255间整数或一组字符。
        字 (word):随计算机被设计时给定自然存储单位改变,从最初的1字长8位到目前的64位。

关键字所占内存(字节):
 int shortlongcharfloatdouble
32424148
64428148   
64位机下经代码测试.

除long之外,其它类型在32与64位机下所占字节数相同。

此外unsigned short、unsigned int、unsigned long与short、int、long相同,
  32位下long double占12字节,64位下long double占16字节,有效位都为10字节。


运算符

基本运算符:     = 、+ 、- 、* 、/   (c没有指数运算符但库中函数可用于指数运算)
逻辑运算符:     && 、|| 、!
其它运算符:     % 、++ 、-- 、sizeof 
      
  1.赋值运算符=:  赋值语句由右向左,右侧为常量(右值)或变量或表达式
                                                            左侧为可修改的左值(标识特定数据对象的名称或表达式);
                              C中也可以 多重赋值;(a=b=c=5;)
  2.加减运算符 +-:运算对象可以是变量、常量、表达式(属于右值);二元运算符;
  3.符号运算符 +-:改变值的代数符号;
  4.乘除运算符 */:整数除法结果(除不尽)中的小数部分被舍弃,称为截断,
                                两运算对象中任一元为浮点数(或强制类型转换)则不会出现截断;
                               除数为0时则程序会出现警告与异常;
                               整型接收int/int结果以整型输出为截断结果;以浮点型输出为0的浮点型格式;
                               浮点型接收int/int结果以整型输出为0;以浮点型输出为截断结果的浮点型格式;(根据结果找代码bug)

  5.逻辑&&||!: 应注意使用方法

                               逻辑与&&两边各为能判断出真值的表达式,且判断后面的表达式的前提为前方表达式(或变量)真值为非0

                               部分情况下也可用于化简循环语句中的判断条件。同理逻辑或 || 在前面条件为0的情况下编译器直接跳过后                           面表达式判断

                               逻辑非 !的使用则要根据对象的不同带上括号防止语法错误。

  6.自增自减++--:使用时根据是否在一条完整的语句中判断先后自增或自减,忌同一条语句中多次使用

  7.按位运算符:  按位与&、按位或 |、按位取反~、按位异或^:作用与逻辑运算符类似,对象为二进制。
  8.左移右移运算符:左移<<、右移>>
                      应用:(函数体部分)
                                ①判断奇偶: return (x&1);   (奇数返回1,偶数返回0)
                                           同理x%4:return (x&2);

                                ②整数平均值:return (x&y)+((x^y)>>1);

                                ③整数是否为2的幂:return ((x&(x-1))==0)&&(x!=0);

                                ④不使用中间变量交换两数值:  x ^= y;  y ^= x; x ^= y;

                                           也可以:x = x+y - x ;  y = x+y - x;

                                ⑤求绝对值: y = x >> 31 ; return (x^y)-y ;

                                ⑥取模、乘除也可以转化为位运算。


ps:部分内容引自《C Primer Plus》。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值