浅谈c语言中类型隐性转换的坑

 更新时间:2016年08月20日 10:40:48   投稿:jingxian  
下面小编就为大家带来一篇浅谈c语言中类型隐性转换的坑。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

谨记:在C语言中,当两种不同类型之间运算时,低字节长度类型会向高自己长度类型转换,有符号会向无符号类型转换。

举例子如下:

#include <stdio.h>


void func(void)
{
  int i = 1;
  unsigned char c1 = 1;
  signed char  c2 = -1;

  if (c2 > i){
    printf("\r\n -1 > 1");
  }
  else{
    printf("\r\n -1 <= 1");
  }

  if (c2 > c1){
    printf("\r\n -1 > 1");
  }
  else {
    printf("\r\n -1 <= 1");
  }

  printf ("\n");
}

int main()
{
  func();
  return 0;
}

输出:

-1 <= 1
-1 <= 1

当C2与i进行比较时,由于C2是有符号8位,i是无符号32位,根据C语言的规则,c2被转换成32位,即-1的补码,故会得出-1>1的结论。

而后面一个-1<1的情况是 c2转化成无符号8位整数,即255,255, 所以大于1。

以上这篇浅谈c语言中类型隐性转换的坑就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 用C++编写扩展node.js(node-ffi版)

    用C++编写扩展node.js(node-ffi版)

    今天小编就为大家分享一篇关于用C++编写扩展node.js(node-ffi版),小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • c++回调之利用sink示例

    c++回调之利用sink示例

    Sink的本质是利用C++的封装、继承、多态的面向对象来实现,从实现角度来说,更优于函数指针回调,下面是示例
    2014-04-04
  • Cocos2d-x学习笔记之世界坐标系、本地坐标系、opengl坐标系、屏幕坐标系

    Cocos2d-x学习笔记之世界坐标系、本地坐标系、opengl坐标系、屏幕坐标系

    这篇文章主要介绍了Cocos2d-x学习笔记之世界坐标系、本地坐标系、opengl坐标系、屏幕坐标系,本文用代码和注释讲解了Cocos2d-x中的坐标体系,需要的朋友可以参考下
    2014-09-09
  • C语言归排与计排深度理解

    C语言归排与计排深度理解

    这篇文章主要为大家详细的介绍了C语言中计数排序和归并排序,归并排序是创建在归并操作上的一种有效的排序算法,计数排序不用比较两个数的大小,感兴趣的朋友可以参考阅读
    2023-04-04
  • C++实现LeetCode(692.前K个高频词)

    C++实现LeetCode(692.前K个高频词)

    这篇文章主要介绍了C++实现LeetCode(692.前K个高频词),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • C++实现文件逐行读取与字符匹配的示例详解

    C++实现文件逐行读取与字符匹配的示例详解

    这篇文章主要为大家详细介绍了如何溧阳C++实现文件逐行读取与字符匹配的功能,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
    2023-03-03
  • OpenCV使用GrabCut实现抠图功能

    OpenCV使用GrabCut实现抠图功能

    Grabcut是基于图割(graph cut)实现的图像分割算法,它需要用户输入一个bounding box作为分割目标位置,实现对目标与背景的分离/分割。本文将使用GrabCut实现抠图功能,需要的可以参考一下
    2023-02-02
  • C语言编一个数字益智小游戏

    C语言编一个数字益智小游戏

    这篇文章主要介绍了C语言编一个数字益智小游戏,本文通过实例截图的形式给大家展示的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • C++简单集合类的实现方法

    C++简单集合类的实现方法

    如何使用C++实现一个简单的集合类,这篇文章主要介绍了C++简单集合类的实现方法,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • 教你在VS2022 MFC程序中调用CUDA代码的方法

    教你在VS2022 MFC程序中调用CUDA代码的方法

    这篇文章主要介绍了在VS2022 MFC程序中调用CUDA代码,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04

最新评论