unsigned short A = 10; printf("~A = %u\n", ~A); char c=128; printf("c=%d\n",c); 输出多少?

这是题目给出的答案:第一题,~A =0xfffffff5,int值 为-11,但输出的是uint。所以输出4294967285 第二题,c=0x10,输出的是int,最高位为1,是负数,所以它的值就是0x00的补码就是128,所以输出-128。这两道题都是在考察二进制向int或uint转换时的最高位处理。 我不明白为什么~A =0xfffffff5,还有为什么c=0x10,不应该是c=0x08吗,不好意思各位大侠,小弟的分数用完了。谢谢回答

2^32=4294967296,

A=10,为无符号型,转换为二进制为0000 0000 0000 0000 0000 0000 0000 1010

所以~A的二进制位1111 1111 1111 1111 1111 1111 1111 0101即0xFFFFFFF5,如果转换为符号整型的话则为-11,因为输出的是无符号整型无符号整型的范围为0~4294967295,而0xFFFFFFF5转换为无符号十进制整型为4294967285

第二题,发生溢出,因为有符号字符型其范围为-128~127

127用二进制表示为:0111 1111,128表示为1000 0000,这里发生溢出,因为第一位为1,为符号位,表示负数,即-128

原文地址:https://www.cnblogs.com/Ph-one/p/8511874.html

时间: 2024-10-12 02:40:35

unsigned short A = 10; printf("~A = %u\n", ~A); char c=128; printf("c=%d\n",c); 输出多少?的相关文章

【C语言基础】unsigned short类型用于循环的一个难点

我在我的知识星球:“C语言解惑课堂”里的第一篇提出一个问题:[第1篇][C语言基础][unsigned short类型用于循环的一个难点]要查看更多的C语言难点解析或者需要提问的同学,微信扫扫文末我的星球二维码加入吧! 一.[问题] 同学们,今天来道C语言比较有意思的题,C程序代码见下图. for循环中我给了变量para一个初始值1,也让para自增1,但是没有指定for循环结束的条件.你觉得有问题吗?会不会是一个无穷尽的循环?如果有问题你打算怎么修改呢? 二.[解惑] 这个循环是会终止的,不会

Qt中将float转换成unsigned short类型

在用Qt开发应用程序时有时候需要将float类型转换为unsigned short类型的.如果进行强制类型转换,那么会出现精度损失的问题,使数据变得不正确.那么可以通过先将float类型的转换为QString类型的,QString sNum = QString::number(fNum);然后调用sNum.toUShort()函数就可以将float转换为unsigned short类型. 来自为知笔记(Wiz) Qt中将float转换成unsigned short类型,布布扣,bubuko.co

转:VC中WORD,DWORD,unsigned long,unsigned short的区别(转)

typedef unsigned long       DWORD;typedef int                 BOOL;typedef unsigned char       BYTE;typedef unsigned short      WORD;typedef float               FLOAT;typedef FLOAT               *PFLOAT;typedef BOOL near           *PBOOL;typedef BOOL

Jan 10 - Isomorphic Strings; String; Data Type: char; digit and letter

创建两个数组 分别记录两个字符串 各个位置字符出现的上一个位置 通过比较当前字符的上一个位置是否相同 判断是否同构 比较坑爹的是 一开始以为只有字母 所以纠结于怎么找出字母来... 代码如下: public class IsomorphicStrings { public static boolean isIsomorphic(String s, String t) { int[] alpha1 = new int[1000]; int[] alpha2 = new int[1000]; for

C语言面试及答案分析

第一部分:基本概念及其它问答题 1.关键字static的作用是什么? 这个简单的问题很少有人能回答完全.在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变. 2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问.它是一个本地的全局变量. 3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用.那就是,这个函数被限制在声明它的模块的本地范围内使用. 大多

嵌入式Linux C笔试题积累(转)

http://blog.csdn.net/h_armony/article/details/6764811 1.   嵌入式系统中断服务子程序(ISR) 中断是嵌入式系统中重要的组成部分,这导致了很 多编译开发商提供一种扩展—让标准C支持中断.具代表事实是,产生了一个新的关键字 __interrupt.下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的. __interrupt double compute_area (double radi

C语言经典面试题目(转的,不过写的的确好!)

第一部分:基本概念及其它问答题 1.关键字static的作用是什么? 这个简单的问题很少有人能回答完全.在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变. 2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问.它是一个本地的全局变量. 3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用.那就是,这个函数被限制在声明它的模块的本地范围内使用. 大多

C语言终极面试及答案分析

http://www.cnblogs.com/Purple_Xiapei/archive/2012/05/10/2495003.html 第一部分:基本概念及其它问答题1.关键字static的作用是什么?这个简单的问题很少有人能回答完全.在C语言中,关键字static有三个明显的作用:1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变.2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问.它是一个本地的全局变量.3)

华为笔试-嵌入式开发(一)

1)什么是预编译,何时需要预编译: 答案: 1.总是使用不经常改动的大型代码体. 2.程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项.在这种情况下,可以将所有包含文件预编译为一个预编译头. (2)char * const p      char const * p      const char *p 上述三个有什么区别? 答案: char * const p; //常量指针,p的值不可以修改 char const * p://指向常量的指针,指向的常量值不可以改 cons