char a = 100; char b = 150; unsigned char c ; c =(a < b)? a:b; 请问c的值为

作者&投稿:东方昂 (若有异议请与网页底部的电邮联系)
C语言中,例如unsigned char a=130;unsigned char b=130;那么 在a+b>255这样比较后的结果是真还是假?~

没有影响,但是为了安全起见,可以unsigned int a,b

有啊。int a=100; char b =(char) a; 就是把 4 字节长的整型 转成 1 字节 长 的 char 型。

char b = 'd'; // ASCII 码值 100
int a = (int) b; // 数值 100
就是把 1 字节长的char 转成 4 字节 长 的 int 型。

char 本身就是 1字节长 的整型。 只要数值范围 不超界,可以强制转换。

char a = 100; char b = 150; unsigned char c ; c =(a < b)? a:b; 请问c的值为b。

计算过程如下

因为char符号的范围在-128~127之间,150会转化为一个负数。

所以a<b不成立

得出结论:b较小

所以c的值应该是150转化的负数,c的值将会取b。



扩展资料:

关于char还有一个特殊的语言就是char *,它在C/C++中有专门的语义,既不同于signed char *,也不同于unsigned char *,专门用于指以'\0'为结束的字符串。

char类型占1字节,就是8位,所能存储的正整数是 0111 1111,即127。如果将 int 型的整数i= 128 赋予ch,会产生溢出。

因128是 int 型,占 4 字节,二进制代码为 0000 0000 0000 0000 0000 0000 1000 0000.。若将它赋给一个只有8位的char 类型变量,只能将低8位的1000 0000 放进去,其他的都会被删掉。



因为char是有符号的,而b已经超出char的上限127,所以b在比较时被当作是-106。

所以,a是大于b的,最后一条的(a<b)判断结果为false,c的值将会取b。

c为b
因为char缺省是有符号的范围是-128~127,
150会转化为一个负数
a<b不成立
b是较小的

c的值应该是150转化的负数 大概是-105


井冈山市13927568234: C语言字符比大小 -
林马珠珀: #include #include main() {char a[100],ch,c; int i,j;gets(a);for(i=0;ifor(j=0;jif(a[i]>a[j]) {c=a[i];a[i]=a[j];a[j]=c;} puts(a);}看出问题来了吗

井冈山市13927568234: char a = 100; char b = 150; unsigned char c ; c =(a < b)? a:b; 请问c的值为 -
林马珠珀: 因为char是有符号的,而b已经超出char的上限127,所以b在比较时被当作是-106.所以,a是大于b的,最后一条的(a

井冈山市13927568234: char a=100;char b=200;char c=0;c=a+b;printf("%d,%d",c,a+b);输出结果是44,300,为什么44 -
林马珠珀: char 是8位的 两个 char 相加返回还是char型的 a+b=300 = 256 + 44, 而256 是第9位上一个1, 超出8位溢出, 所以只剩下44了. 如果改成下式就能输出300了.printf("%d,%d",c,int(a)+int(b));

井冈山市13927568234: 用c语言求一个字符串中某个字符的个数 -
林马珠珀: #include <stdio.h>#include <string.h> int main() { char a[100], ch; int i, count = 0; printf ("输入一个字符串(小于100个字符\n"); gets (a); printf ("输入查询字符:\n"); ch = getchar ();for (i=0; i<strlen(a); i++) { if (a[i] == ch) { count ++; } } printf ("该字符的个数是%d\n", count); return 0; }

井冈山市13927568234: C语言怎么给char a[100] = { 0 };中的a赋值呢 -
林马珠珀: 方法一: a[0]='a'; a[1]='d'; a[2]='f'; a[3]='a'; a[4]='s'; a[5]='d'; a[0]='\0'; 方法二: memcp(a, "adfasd", strlen("adfasd"));方法三 strcpy(a, "abcdefg");

井冈山市13927568234: c中int a=100;怎么转换成char a=100的 求思路 -
林马珠珀: 这里以四位数为例,仅提供思路.#include<stdio.h>void main(){ int a = 4234; char num_arr[4];//int num0 = a / 1000 ;//取千位上的数 int num1 = a / 100 % 10 ; //取百位上的数 int num2 = a / 10 % 10;//取十位上的数 int num3 = a % 10;//取个位...

井冈山市13927568234: c++里面, char a[100] =''hello'';和char *p = ''hello'';的区别是什么. -
林马珠珀: 位置不同 char a[100] 在栈上分配了数组的空间,可读,可写 char *p = "hello", 字符串的空间在常量区分配,只读 严谨的写法应该是: const char *p = "hello"; C/C++为了兼容历史代码,才允许写成char *p = "hello"; 但一旦试图写入这个空间,操作系统(DOS不算啊)会捕捉这个错误的

井冈山市13927568234: 编写一函数,将一个字符串反序存放到另外一个字符串 -
林马珠珀: //修改如下#include <stdio.h>#include <string.h> int main() {void test1 (char a[],char b[]);char a[20],b[20];gets(a);test1 (a,b);puts(b); return 0; } void test1 (char a[],char b[]) {int i=0,j=0;for(i=0;a[i]!='\0';i++) ; //这个分号不能省略 for循环执行空操...

井冈山市13927568234: char a[10][100];什么意思 -
林马珠珀: 二维数组,表示10个char [100]的集合;可以理解为10行100列的矩阵; 希望你能满意

井冈山市13927568234: 用C语言编写一个程序(输入一段字符串,并设定一个字母,如果字符串中有这个字母,就把这个字母删除)
林马珠珀: #include <stdio.h> void main() { char s[100],c; int i,j; printf("输入一个字符串:"); gets(s); printf("输入要删除的字符:"); scanf("%c",&c); for(i=j=0;s[i];i++) if(s[i]!=c) s[j++]=s[i]; s[j]='\0'; printf("%s",s); }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网