unsigned char 与 char

摘要:
另一个区别是,当将128到255之间的数字分配给signedchar变量时,编译器必须首先转换该值,并且还会出现警告。函数:计算字符串1charsText[]=“12345Hello”中的字母数;2len=strlen;3intsum=0;4for5{6//字符˃=657if8{9sum++;10}11}的ASCII。这样,您可以计算任何汉字,因为char是有符号的,最大值是127。如果超过,它将变成负数。“˂˃temp;return0;}运行结果:将无符号charsText[]=”12345 Hello“;更改为charsText[]=”12345Hello“,运行结果:

Character values of type unsigned char have a range from 0 to 0xFF hexadecimal. A signed char has range 0x80 to 0x7F. These ranges translate to 0 to 255 decimal, and –128 to +127 decimal, respectively. The /J compiler option changes the default from signed to unsigned.

char 是有符号

unsigned char 是无符号的,里面全是正数

两者都作为字符用的话是没有区别的,但当整数用时有区别:

char 整数范围为-128到127( 0x80__0x7F),

unsigned char 整数范围为0到255( 0__0xFF )

多数情况下,char ,signed char 、unsigned char 类型的数据具有相同的特性然而当你把一个单字节的数赋给一个大整型数域时,便会看到它们在符号扩展上的差异。另一个区别表现在当把一个介于128和255之间的数赋给signed char 变量时编译器必须先进行数值转化,同样还会出现警告。

看下面的函数。

功能:统计字符串里面的字母的个数

 1 char sText[]= "12345Hello";
 2 len = strlen(sText);
 3 int sum=0;
 4 for (int i=0; i< len; i++)
 5 {
 6 // The ASCII of character >= 65
 7 if (sText[i] > 64)
 8 {
 9 sum++;
10 }
11 }

这样你根本统计到任何汉字,

因为char有符号的,最大就是127,超过就变成负数了。比如7f 是127,那么80就是-1了。

参考程序:

#include <iostream>
#include <string.h>
using namespace std;
int main()
{
unsigned char sText[]= "12345你好";
int len = 0;
char temp;
// unsigned int strlen(const char *s);
// We need to convert sText from unsigned char* to const char*
len = strlen((const char*)sText);
cout<<"The strlen is"<<len<<endl;
int sum=0;
for(int i=0; i< len; i++)
{
// The ASCII of character >= 65
if (sText[i] > 64)
{
sum++;
}
cout<<"Character count:"<<sum<<endl;
}
// just to have a pause
cout<<"Enter any thing to exit!"<<endl;
cin>>temp;
return 0;
}

运行结果:

unsigned char 与 char第1张

把unsigned char sText[]= "12345你好";改成char sText[]= "12345你好",运行结果:

unsigned char 与 char第2张

免责声明:文章转载自《unsigned char 与 char》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用DUPLICATE 方式创建ORACLE 11G DG备库环境Windows:添加、删除和修改静态路由下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C语言中怎么求动态数组大小

先来个简单的样例 int a[] = {1,2,3}; int arr_len = 0; arr_len = sizeof(a)/sizeof(int); 解释:sizeof() keyword是求出对象所占用的内存空间的大小,so, sizeof(a)是算出整个数组占用的空间的大小。 由于是整数数组。一个整数在32位系统上占用4个字节,不同的系统数...

JPA或Hibernate中的

JPA执行原生SQL截断Char类型问题 在JPA的API中执行原生SQL:EntityManager.createNativeQuery(String sqlString);传入参数是原生SQL语句,返回SQL对象。 如果oracle数据库中某个字段定义的是char类型,比方说是char[2],当使用EntityManager.createNativeQ...

ORA-22835 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小

在使用Oralce时,直接取出 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换时,会出现ORA-22835的异常,以下是个人的解决方案 create or replace Function BlobToVarchar (Blob_In In Blob) Return clobIsV_Varchar Varchar2(32767);V_Varch...

MFC中使用Picture Control控件显示OpenCV图像几种方法

本文参考自https://blog.csdn.net/byxdaz/article/details/88091164 本人测试代码如下: // ShowImageInMFCDlg.h : 头文件 // #pragma once #include <vector> #include <string> #include <ope...

c++读写二进制文件

要读取文件必须包含<fstream>头文件,这里包含了C++读写文件的方法,可以使用fstream 类,这个类可以对文件进行读写操作。   1、打开文件。   打开文件可以有两种方式,第一种可以使用fstream 类的构造函数。 ios::in :输入文件(同ios_base::in) ios::out :输出文件(同ios_base::out...

Crypto++入门学习笔记(DES、AES、RSA、SHA-256)

最先附上下载地址 背景(只是个人感想,技术上不对后面的内容构成知识性障碍,可以skip): 最近,基于某些原因和需要,笔者需要去了解一下Crypto++库,然后对一些数据进行一些加密解密的操作。 笔者之前没接触过任何加密解密方面的知识(当然,把每个字符的ASCII值加1之流对明文进行加密的“趣事”还是干过的,当时还很乐在其中。),甚至一开始连Crypto+...