C/C++中unsigned char和char的区别

代码:

 1 #include <cstdio>
 2 #include <iostream>
 3
 4 using namespace std;
 5
 6 int main(){
 7
 8     unsigned char c1 = 0x80;
 9     char c2 = 0x80;
10     int a1 = c1;
11     int a2 = c2;
12     cout<<a1<<endl<<a2<<endl;
13
14     return 0;
15 }

输出:

128
-128

分析:

由输出可知,unsigned char向int转换时不会扩展最高位,而char(signed char)则会。

时间: 2025-01-17 21:55:40

C/C++中unsigned char和char的区别的相关文章

编写一个函数char_contains(char str[],char c), 如果字符串str中包含字符c则返回数值1,否则返回数值0

/* 编写一个函数char_contains(char str[],char c), 如果字符串str中包含字符c则返回数值1,否则返回数值0 */ #include <string.h> #include <stdio.h> // 可读性 -> 性能 -> 精简(重构) int char_contains(char str[], char c); int main() { //int result = char_contains("itc8ast"

[C知识点]char unsigned char signed char知识点

1.char,unsigned char, signed char 都是占一个字节. 2.signed char范围为 -128-127  0000 0000表示+0 1000 0000表示-0.+0和-0表示的值是一样的.为了不浪费这一位用1000 0000表示128 unsigned char范围为 0-256. 3. char根据编译器的不同,被解释成signed char或者unsigned char. 4.VC编译器.x86上的GCC都把char定义为signed char,而arm-

用c++语言编写函数 int index(char *s,char * t),返回字符串t在字符串s中出现的最左边的位置,如果s中没有与t匹配的子串,则返回-1。类似于索引的功能。

首先,分析一下程序的思路: 1:从s的第i个元素开始,与t中的第1个元素匹配,如果相等,则将s的第i+1元素与t中的第2个元素匹配,以此类推,如果t所有元素都匹配,则返回位置i;否则,执行2; 2: i++;如果s的第i个元素是'\0',即字符串的结束符,停止执行:否则,重复步骤1. 接着,给出这个程序: #include <iostream>                                    //存放了输入输出流#include <cstdio>      

MFC中cstring,string和char[]的相互转化

int 转 CString:CString.Format("%d",int);...............................string 转 CString CString.format("%s", string.c_str()); 用c_str()确实比data()要好. .......................................char* 转 CString CString.format("%s", cha

mysql中char与varchar的区别分析

原文网址:http://www.jb51.net/article/23575.htm mysql中char与varchar的区别分析 作者: 字体:[增加 减小] 类型:转载 在mysql教程中char与varchar的区别呢,都是用来存储字符串的,只是他们的保存方式不一样罢了,char有固定的长度,而varchar属于可变长的字符类型. char与varchar的区别 char (13)长度固定, 如'www.jb51.net' 存储需要空间 12个字符 varchar(13) 可变长 如'w

理解C/C++中const char*、char* const、const char* const、char* const*等等

先说些题外话,今天学习execve(2)的使用,由于书上代码使用的是C89标准,所以下面这种代码都被我修改了 char* s[] = { "aaa", "bbb", "cc" }; 也就是在char前面加个const,因为"aaa"."bbb"."cc"都是字符串字面值(string literal),在C++标准中string literal只能转换成const char*,原因是即使

C语言中为什么不能把char**赋给const char**

这是我在知乎回答的一个问题. 这个问题是C中的一个深坑,首先说结论: char ** 和 const char ** 是两个不相容(incompatible)的类型,可以理解为不能直接赋值 在C11的6.5.2.2 Function calls中有如下内容 Each argument shall have a type such that its value may be assigned to an object with the unqualified version of the type

C++ 中类型转换 xmlChar * 与Char * 转换,Char *与int 转换,Char *与Float转换,int 与portNumBits转换

使用libxml2 得到一个节点的内容: xmlChar *value = xmlNodeGetContent(node) 1.XmlChar 转换成Char char * stream = (char *) value; 2.Char *与  int 转换 int x = atoi(stream); #include "stdio.h" #include "stdlib.h" main() { char *p="1234567"; int x;

托管C++中System::String^ 转换为 char*

https://docs.microsoft.com/en-us/cpp/dotnet/how-to-convert-system-string-to-standard-string?view=vs-2019 StringToHGlobalAnsi方法可以把托管 String^对象的内容复制到本机堆, 然后将它转换为 (ANSI) 格式.此方法会分配所需的本机堆内存: //using namespace System::Runtime::InteropServices; char* str2 =

char *与char []深度刨析

编译不能通过 #include "iostream" using namespace std; int _tmain(int argc, _TCHAR* argv[]) { char *p= "hello" ; //不是把一个字符串赋给了一个字符型的指针,而是把一个字符型的指针指向了字符串的首地址. strcpy(p,"hel"); cout << p << endl; return 0; }//编译通不过 解析:char