c语言里面,如果一个大于256的数字,用字符表示会怎样

charfp;fp=300;printf(fp);还有其中的道路是什么谢谢#include<stdio.h>#include<string.h>#include<coni... char fp;
fp=300;
printf(fp);
还有其中的道路是什么
谢谢
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
unsigned char xx[50][80];
int maxline = 0; /* 文章的总行数 */
int ReadDat(void);
void WriteDat(void);
void encryptChar()
{
int i;
char *pf;
for (i=0; i<maxline; i++)
{
pf = xx[i];
while (*pf != 0)
{
if (*pf%2 && *pf*11%256>32)
*pf = *pf*11%256;
pf++;
}
}
}
void main()
{
if (ReadDat())
{
printf("数据文件IN.DAT不能打开!\n\007");
return;
}
encryptChar();
WriteDat();
}
int ReadDat(void)
{
FILE *fp;
int i = 0;
unsigned char *p;
if ((fp = fopen("IN.DAT", "r")) == NULL)
return 1;
while (fgets(xx[i], 80, fp) != NULL)
{
p = strchr(xx[i], '\n');
if (p)
*p = 0;
i++;
}
maxline = i;
fclose(fp);
return 0;
}
void WriteDat(void)
{
FILE *fp;
int i;
fp = fopen("OUT.DAT", "w");
for (i=0; i<maxline; i++)
{
printf("%s\n", xx[i]);
fprintf(fp, "%s\n", xx[i]);
}
fclose(fp);
}
展开
 我来答
xingyunbuzui
2012-09-10 · TA获得超过1160个赞
知道小有建树答主
回答量:346
采纳率:100%
帮助的人:389万
展开全部
呵呵,如果你说的字符是C的话,一个字符多大?一个字节。
一个字节能表示多大的数据范围?256。

明白ASCII嘛为什么最多只编码到256?

超过256的数字?定义成单字节字符,那这个字符用什么值存?

所以:如果大于256的字符,就不是单字节字符了。
双字节字符编码方式多了,例如unicode、GBK等等,编码不一样同样一个值,字符也不一样,所以才有乱码。那又是另外一个话题。
更多追问追答
追问
那c里面到底是用的单字节还是双字节呢,因为字符型变量确实输出了乱码。。谢谢
追答
当然是单字节!
你说的乱码是在什么场合出的,可以描述清楚一点吗?
什么程序,输出的是什么?是不是带中文?什么操作系统?
White_MouseYBZ
2015-10-14 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6658万
展开全部

截断处理,即从最低位起截取8位二进制码作为结果。如:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
    char x=257;//这里会有警告,就是在说x放不下257,把257截断处理了
    printf("%d\n",x);
    return 0;
}

输出是1。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
周生008
2012-09-10 · TA获得超过1222个赞
知道小有建树答主
回答量:1329
采纳率:0%
帮助的人:647万
展开全部
256的二进制是1 0000 0000,执行过程中直接把后8位给了字符变量fp,所以结果是0
C语言中如果给一个字符变量赋值,那就直接切8位即一个字节内存中的内容给他,其他的忽略掉
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
猫猡
2012-09-10
知道答主
回答量:46
采纳率:0%
帮助的人:20.3万
展开全部
超过255,又回从0算起
比如256,就是0,257就是1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Amroll
2012-09-10 · TA获得超过106个赞
知道小有建树答主
回答量:89
采纳率:0%
帮助的人:75万
展开全部
字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128~127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围是0~255(有些机器把char型当做unsighed char型对待, 取值范围总是0~255)。
追问
那为什么字符型变量会输出乱码,不应该限于assic之内吗
追答
ASCII 的范围是 0 到 127,故而 7 位(Bit)就足以表示全部 ASCII。Char 一般占用 8 位内存单元,表示ASCII绰绰有余。许多系统都提供扩展ASCII(Extended ASCII),并且所需空间仍然在 8 位以内。注意,不同的系统提供的扩展 ASCII 的编码方式可能有所不同!

300=0x12C
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式