为您找到"
...*a="main(){char*a=%c%s%c;printf(a,37,a,34);}"; printf(a,34,a...
"相关结果约100,000,000个
答案是C。scanf读了两个字符,所以a='1',b='2'。但scanf没有把一行读完,最后还有一个回车。所以c=getchar()读到的是回车。d才读到下一行的3。所以打印结果就是12回车3,是C
结果是bcdABCD ①定义了一个char数组s,内容初始化为"abcd"②定义了一个char指针sp指向数组s的首地址(此时sp指向abcd中的a)③sp++,指针后移了到下一个位置,(由于数组的地址是连续的,所以此时sp指向a后面的b)④strcat(sp,"ABCD"),把"ABCD"的首地址放在了与sp所指的数组结尾相连并存在数组里面(...
include <stdio.h> Main(){char c1='A',c2='y';printf(''%d ,%d\ n'',c1,c2);} 如果是这个的话,输出的结果是A和y的ASCII码 65,121 想输出字符改成这个:printf(''%c ,%c\ n'',c1,c2);
strlen是在求字符串长度,字符串末尾都要以'\0'为结尾,这里是a不构成一个串
while(a[i]<0 ||a[i]>20){ printf("again\na[%2d]:",i);scanf("%d",&a[i]);} sum+=a[i];} aver=sum*1.0/N;if(aver<4)grade='F';else if(aver<7)grade='E';else if(aver<10)grade='D';else if(aver<12)grade='C';else if(aver<16)grade='B';else grade='A...
结果是-13015,21;123456789的16进制是0x075bcd15;((short*)&a)的结果是取a的低2位字节,既是0xcd15;按照%d输出,所以在高2位字节补1,其输出值是0xffffcd15;是个负数;((char*)&a)的结果是取a的低1位字节,既是0x15;按照%d输出,所以在高3位补0,其输出值是0x00000015,也即是21 ...
当然不会了。自动加0的,是字符串,不是字符数组。比如char p[]="abc";,会在末尾自动加0,因为"abc"是字符串。而char p[]={'a','b','c'};是字符数组,其性质与int n[]={1,2,3,4};无异。之所以会出现这种情况,原因很简单,这是因为对于任何一个数组,如何只是初始化的部分元素,...
union { int b;char a[2];}s;s.a[0]=0x39;s.a[1]=0x38;printf("%x\n",s.b);=== 共用体,使用同一个地址空间:int共4字节,并且是4字节对齐。(结构体字节对齐规则)int: byte1[ ] byte2[ ] byte3[ ] byte4[ ]char[2]:byte1[39] byte2[38] 未知...
c & c 是 c 同 c 做2进制 “按位与”运算, c 同 c “按位与”的结果 就等于 c printf("%d -- %d 就是大写的A , 按ASCII码数值 用 十进制 输出。大写的A ASCII码数值 是 65,所以结果 是 65。printf("%d %c\n",c,c); // 输出 65 A ...
自己运行一下就知道了呀!以后要学着自己编写程序运行程序。要不然只是网上求助是不能学到什么的。程序是这样的:include <stdio.h> main(){ char*s={"ABC"};do { printf("%d",*s);s++;} while(*s);} 结果是:656667Press any key to continue ...