c语言问题如图:sizeof计算的结果是7吗?因为最后有\0,这样计算的结果不就多了一位?

作者&投稿:道泽 (若有异议请与网页底部的电邮联系)
C语言sizeof问题~

在16位系统中,我记得是在以前的TC2.0, TC3.0上,都没有字节对齐的问题,所以应该是2+1+4+4=11。

在32位系统中,条件不全,答案可能是:20、18、17。
如果没有任何对齐条件,缺省是按4字节对齐的,这时char n2占4个字节,总大小是20字节;
如果这段代码的前方存在#pragma pack(2),即要求按2字节对齐,则char n2占2个字节,总大小是18字节;
如果这段代码的前方存在#pragma pack(1),即要求按1字节对齐,则char n2占1个字节,总大小是17字节;

第三个元素,"ijklwdd"
这个确实是8个元素,包括\0.
不过开的数组只有一行7个,所以最后一个\0放不下,被忽略了。
如果%s输出a[2]会把ijklwdd和mnopz一起输出。

sizeof求的是变量所占内存的字节数。
题中结果是7,表示数组的大小,6个可显示字符加结束符\0。
如果要求字符串长度可以使用strlen(charArr)库函数。

这是计算数据占的字节数,它确实占7个字节的空间,所以没有算错,没有多一位


几个简单的汇编语言问题
3。段边界定义SEGMENT...END和过程定义PROC...ENDP和模块定义NAME...END有什么区别?谢谢问题补充:这个要去了解段、过程和模块的区别。间接寻址只能用bx,dx,si,di吗?out和in的操作只能用ax,dx吗?间接寻址只能用bx,dx,si,di。out和in的操作中只能用ax,al,dx和0~255的立即数端口地址 ...

哪国语言中si的意思为:是?
是西班牙语 si是“是“的意思 no是“不“

汇编语言程序题目 如图 急求
arraymlp: mov ax,[si] call g inc si inc si loop mlp mov ax,[count] call writeint int 20h; 要判断的数放入ax中; ax返回1时表示是素数; ax返回0时表示是合数f proc near jmp f1x dw ?x2 dw ?f1: mov [x],ax shr ax,1 mov [x...

求汇编语言的一个问题
已知(DS)=1234H,(SI)=124H,(12464H)=30ABH,(12484H)=464H LEA SI,[SI];执行后SI为0124H MOV AX,[SI];SI所指的物理地址为DS*16+SI=12340+0124=12464,执行后AX=30ABH MOV WORD PTR [SI+22H],1200H;执行后12486H为00H,12487H为12H LDS SI,[SI+20H];执行后SI为0464H,DS为...

几个汇编语言问题.高手帮忙解答下..
1.MOV [SI],'A';有错,应该指定内存的属性为字节,改为MOV BYTE PTR [SI],'A'2.MOV AL,BX;有错,类型不匹配,AL为8位,BX为16位 3.MOV BL,SI+2;有错,应该改为MOV BL,[SI+2]4.INC [BX];正确 5.MOV 256,AL;有错,立即数256不能作为目的操作数 6.MOV AX,BYTE PTR ALFA;...

汇编语言:底下的程序显示 cmp [si],0和test[si]不正确 为什么啊 这...
已经改过了,[si]是寄存器间接寻址,但是无变量名的寄存器变量寻址属于无类型量,后面的立即数也是无类型量,所以不符合语法规则,使用ptr伪指令即可修改。。还有x属于字节型变量,所以不要和8000h比,和80h比就够了,你不就是想验证一下零的最高位是一还是零吗?data segment x db -9,4,0,0,'$...

请教一个C语言的简单问题
把赋值和if else语句放在循环里,要不然怎么迭代?另外,楼上说的很对,多了一个分号之后,函数必然执行return语句,后面的else就没用了,编译时找不到对应的if.参考 http:\/\/zhidao.baidu.com\/question\/35771388.html?si=10 很简单 因为你只申请了一个char型空间让s1和s2都指向他,第一次给s1传值15 ,...

急,汇编语言程序问题,关于发声的
; SI=声音频率地址 ; CX=时间 Music Proc Near in al,61h push ax or al,3 out 61h,al ;接通扬声器 push cx push dx push si mov al,0b6h out 43h,al mov dx,12h mov ax,348ch div word ptr [si]out 42h,al mov al,ah out 42h,al in al,61h mov ...

微机 汇编语言的题目
一开始没看懂你想问什么,看了下代码才明白。你是想问为什么mov dl, [si+1]之后,dl=(37H)吧。因为si指向了v3这个数组,所以[si+1]指向了数组的第2个元素,即'7'这个字符而'7'的ASCII码值,就是37H,你看不懂是因为你们老师没有告诉你们,学汇编要记忆一些重要的字符的ASCII码值。如'a',...

一个汇编语言问题
程序如下:sseg segment stack dw 20h dup(?)sseg ends dseg segment data db 1h,2h,3h,4h,5h,6h,7h,8h,9h,13h number dw 10 x db ?theend db ?dseg ends cseg segment assume ds:dseg,cs:cseg,ss:sseg start:mov ax,dseg mov ds,ax mov si,1000h mov ax,number mov [si],ax...

冠县13626706452: C语言,sizeof函数测什么,具体用法怎么用 -
谏侮清瘟: sizeof()用来测给定的数据类型在内存中占的字节长度; 比如我想知道int类型变量占几个字节 就这样使用:len = sizeof(int) 就可以了,len就是int型变量在内存中字节数; 当然你也可以这么用 int a; len = sizeof(a); 编译器会知道a是int型变量的,会自动换成sizeof(int); 另外 自己定义的数据类型也可以用sizeof来求字节数,比如定义了一个类class A{...},然后你 这样用:len = sizeof(A),就能知道A占了几个字节; 最后,提示下,sizeof是关键字或者说是运算符,不是函数,它的结果是编译的时候就确定了的,没有函数调用;

冠县13626706452: C语言 求字节数 :sizeof 怎么运算 -
谏侮清瘟: 这不是函数,sizeof是一个关键字,用来计算数据的长度,比如:sizeof(a);

冠县13626706452: c语言中sizeof的用法 -
谏侮清瘟: sizeof会返回占用空间的大小,但是却是返回占用的字节数.然而比如int这样的占4字节(你图上sizeof(stu)就是算出整个线性表所占的总字节数),为了确定到底有多少个元素,需要占用字节数/一个元素占用的字节数(sizeof(struct stu)就是线性表的一个成员占用多少字节).

冠县13626706452: 请问这个C语言sizeof()问题怎么编程?表示从未学过,老师从未讲过,书本没有过叫我怎么写 -
谏侮清瘟: #include <stdio.h> int main() { printf("%d\n",sizeof(char));printf("%d\n",sizeof(short)); printf("%d\n",sizeof(int)); printf("%d\n",sizeof(long)); printf("%d\n",sizeof(float)); printf("%d\n",sizeof(double));return 0; }

冠县13626706452: C语言程序中Sizeof这个语法怎么用? -
谏侮清瘟: sizeof 在 C语言 中 是“运算符”,如同 +-*/ 运算符,不是函数.检查Int所占的字节数:#include <stdio.h>#include <stdlib.h> void main() { int x; x = sizeof(int); printf("%d",x); exit(0); }------------- sizeof(..); 括号里可以填类型,也可以是变量名,结构名等.例如 int a[5]; printf("%d",sizeof(a)); // 填了数组名,测 int a[5];所占的字节数

冠县13626706452: C语言一个关于sizeof和strlen的问题 -
谏侮清瘟: 常量字符串后面系统默认会加上一个'\0'作为字符串结束符,所以 char buf[]="123456\n";定义数组的时候,会算上字符串结束符,也就是说buf数组的长度其实是8,sizeof作用于数组时计算的是数组占用的内存字节数,所以,结果是8 而strlen计算数组长度时是不包含字符串结束符的,所以,结果是7

冠县13626706452: C语言 sizeof(float)是什么?如图选哪个?解释一下 -
谏侮清瘟: B,一个整型表达式——因为sizeof是取变量(类型)占用内存空间的操作符,得到一个整型值(严格点是unsigned型).

冠县13626706452: C语言的字符数组中sizeof()操作符的计算问题,请帮忙进来看看! -
谏侮清瘟: char s[5] 是 5个字符,s[5] = '\0'; 属于内存越界操作sizeof不关心'\0',它只跟变量定义有关,即使s里存储的都是'\0',sizeof(s)还是5"abcde"是个常量字符串,c的定义里自动给常量字符串加了结束符'\0'.所以它相当于{ 'a', 'b', 'c', 'd', 'e', '\0' }char c[] = "abcde"; 是根据常量字符串自动推导c的大小,这里sizeof("abcde") = 6,所以这句等价于char c[6] = "abcde";

冠县13626706452: C语言中,sizeof运算符有什么作用? -
谏侮清瘟: sizeof运算符 该运算符在编译阶段就已经起作用了.它以字节为单位返回其操作数的大小.它的操作数可以是数据对象也可以是一个类型.如果是类型那么操作数需要用圆括号括起来. 如:sizeof(int)=4; 扩展资料: C语言其他运算符: 1、...

冠县13626706452: C语言的问题int y; y=sizeof (2.25*4);求出y 的值是8.怎么来的啊 -
谏侮清瘟: sizeof返回的为字节长度,2.25默认为double型,再乘2还是double型,所以为8字节,所以y=8,将2.25改为2.25f则y=4,因为f为float型,4字节,不明白可以问我qq582158616

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