C语言里int,unsigned int,shor int...转换输出问题

这问题,有时候是个困扰,抽空梳理一遍。

signed char->unsgned char:%c->%c 0->127(对应范围)

char->int:%c->%d->%c,‘A‘->65(可打印字符表对应)

short int->int:%d->%d,100->100(对应,反向操作若超出范围,循环读取对应)

short int->unsinged int:%u->%d,(对应,反向操作若超出范围,循环读取对应)

unsigned int->int:%u->%d,4294967295->2147483647(对应范围)

signed -128~127

unsigned char 0~127

char -128~127 (一般机器=signed char)

short int -32768~32767

unsigned short int 0~65535

int (signed int) -2147483648~2147483647

unsigned int 0~4294967295

时间: 2024-10-10 06:52:10

C语言里int,unsigned int,shor int...转换输出问题的相关文章

C语言复杂声明-void (*signal(int sig, void (*handler)(int)))(int);

问题提出 请分析此声明:void (*signal(int sig, void (*handler)(int)))(int); 求解过程 在对上面的例子作分析之前,我们需要了解C语言的声明优先级,<C专家编程>P64原文如下: 规则A规定了要按照优先级来解释声明(算是一句废话).规则C请参照本人上一篇笔记:http://www.cnblogs.com/deyuanqin/p/5705967.html.规则B的具体实践过程如下图: 本着抛砖引玉的目的,我们使用以上规则分析void (*signa

C语言基本类型之long long int

大家都知道int在linux系统下默认是占4个字节,数值表示范围是:-2147483648~2147483647.即使是无符号unsigned int类型表示范围:0-4294967295,大约42亿. 在大多情况下int类型都是可以满足需要的,但不乏有特殊情况:今天做ineedle测试的时候就用发包工具进行发包,速度很快,int类型已经满足不了需求.这时候就想到用long long int类型了,long long int类型的取值范围是:-9223372036854775808--92233

【C语言】【笔试题】编写一个函数itob(int n,char s[], int b),将整数n转换为以b进制的数。保存到s中。

#include <stdio.h> static int i=0; int itob(int n,char s[],int b) { if(n<2) { s[i]=n+'0'; } else { itob(n/2,s,b); //递归 i++; n=n%2; s[i]=n+'0'; } s[i+1]='\0';//结束标志 return 0; } int main () { char s[20]; int num=0; scanf("%d",&num); i

【详解】C语言:编写一个函数itob(int n,char s[], int b),将整数n转换为以b进制的数。保存到s中。

#include<stdio.h> void itob(int n,char s[], int b) {  int i=1;  for(;i<=32;i++)    //共循环了32次,保证得到32位的二进制数  {   s[i-1]= n % b;   //数组是从编号0开始的,一直到编号31结束   n = n/b ; //用模除的方法依次得到每位进制数  }  for(i=32;i>0;i--)  {   printf("%d",s[i-1]);   }

关于c语言声明 void (*signal(int sig, void(*func)(int)))(int)的理解

刚开始看到这个 很蛋疼 还是慢慢理解 首先 void(*func)(int) 是一个指针 指向一个 返回值为void 参数为int的函数 是一个函数指针 具体理解http://zhidao.baidu.com/link?url=5GpEN7wPUhDlk_m-3drRHV9bGxv53tj818vtd1GIsyaVfyY1mdsFZfP6_2M_DNAfTQrh0qxMo_wXhK1CjIEPJK 然后看外围的函数声明 是不是和里面有点类似 对的 里面函数 简写为void   (*signal(

数据结构基础之memset---有memset 抛出的int 和 char 之间的转换和字节对齐

今天晚上,在做滤波算法时,里面用到很多float 和int 以及char 之间的类型强制转换,后面滤波完发现图片有些区域块,有过度曝光的白光,我就跟踪,以为是char 字符数字数据溢出问题,加了0-255的判断,然后打印,发现强制转换后的int类型数据多处出现负数,很奇怪,后面写了个测试程序,慢慢的问题出来了 : #include <stdio.h>#include <stdlib.h>#include <string.h>int test(int wid, int h

C++中(int&amp;)和(int)的区别

在说这个问题之前,先说两个需要知道的背景知识: (1)语言的类型的强制转换不会修改原来的数据,会另外的开辟一个临时的或者程序中指定的空间来存储强制转换后的值. (2)C++引用的实现是在符号表中动了手脚,把自己的变量符号对应的内存地址写成了它所引用的那个变量的内存地址了. (3)C++的cout函数的执行,是根据变量的名称找到对应的内存地址,然后根据变量的类型从内存中抓取相应的数据. 有了上面的两个知识点,看下面的程序: #include <iostream> using namespace

ipv4地址向int型转换,int型数据向ipv4转换。

将一个ip地址格式的字符串转换为一个int型(4字节32位)的数据.例如 char *p = "192.168.001.001"; 函数实现如下: int ipv4_to_int(char *ip) { int tmp = 0; char ip1, ip2, ip3, ip4; ip1 = atoi(ip); ip = strchr(ip, '.'); if(!ip) return -1; ip2 = atoi(++ip); ip = strchr(ip, '.'); if(!ip)

类型转换 - CString,int,string,char*之间的转换

<C++标准函数库>中说的 有三个函数可以将字符串的内容转换为字符数组和C—string 1.data(),返回没有”\0“的字符串数组 2,c_str(),返回有”\0“的字符串数组 3,copy() ................................................................. int 转 CString: CString.Format("%d",int); ..............................

有符号int和无符号int的比较

int array[] = {1,2,3,4}; #define TOTAL_ELEMENTS (sizeof(array)/sizeof(array[0])) int main() { int d = -1; if(d <= TOTAL_ELEMENTS) printf("TRUE\n"); else printf("FALSE\n"); } sizeof()返回类型为无符号整型unsigned int,因此代码中的TOTAL_ELEMENTS值是unsig