前言:
现在小伙伴们对“linux的求和c语言”大致比较看重,小伙伴们都需要学习一些“linux的求和c语言”的相关知识。那么小编同时在网摘上收集了一些对于“linux的求和c语言””的相关文章,希望看官们能喜欢,兄弟们快快来学习一下吧!C语言开发进阶(4)
一、下面代码的结果是什么?
int i = -20;unsigned int j = 10;printf("%d\n",i+j);
这段代码展示了在进行整数运算时,有符号整数和无符号整数的相加操作。
int i = -20; 定义了一个有符号整数变量 i,并将其赋值为 -20。unsigned int j = 10; 定义了一个无符号整数变量 j,并将其赋值为 10。printf("%d\n", i + j); 使用 printf 函数以有符号整数格式 (%d) 输出变量 i + j 的结果。由于 %d 表示输出有符号整数,此时 printf 函数会将结果作为有符号整数进行解释。
二、下面代码的结果是什么?
int main(){ unsigned int i; for (i = 9; i >=0 ; i--) { printf("%d\n",i); } return 0;}
这段代码展示了使用无符号整数类型变量进行递减循环的过程。
unsigned int i; 声明一个无符号整数类型变量 i。for (i = 9; i >= 0; i--) 使用 for 循环,从初始值 9 开始递减,直到 i 的值小于等于 0 时结束循环。printf("%d\n", i); 在每次循环迭代时,使用 printf 函数以有符号整数格式 (%d) 输出变量 i 的值。
在递减循环的过程中,由于 i 是无符号整数类型,其值不会小于 0。当 i 递减到 0 时,再进行递减操作会导致 i 变为一个较大的正整数,从而产生了无限循环。这是因为无符号整数类型的下溢是定义行为,即当一个无符号整数变量减到 0 后继续递减,其值会变为该类型的最大值再加 1,形成一个循环。
运行代码后,会产生无限循环,输出结果会不断打印 4294967295(无符号整数类型的最大值)。
注意:为了避免无限循环,可以考虑修改循环条件或使用有符号整数类型来控制循环。
三、以下代码输出的结果是?
int main(){ unsigned int i; for (i = 9; i >=0 ; i--) { printf("%u\n",i); } return 0;}
这段代码展示了使用无符号整数类型变量进行递减循环的过程,并以无符号整数格式输出变量值。
unsigned int i; 声明一个无符号整数类型变量 i。for (i = 9; i >= 0; i--) 使用 for 循环,从初始值 9 开始递减,直到 i 的值小于等于 0 时结束循环。printf("%u\n", i); 在每次循环迭代时,使用 printf 函数以无符号整数格式 (%u) 输出变量 i 的值。
由于 i 是无符号整数类型,其值不会小于 0。当 i 递减到 0 时,再进行递减操作会导致 i 变为一个较大的正整数,形成一个循环。
运行代码后,会进行递减循环,并输出从 9 到 0 的无符号整数值:
9876543210
注意:在使用无符号整数类型进行递减循环时,需要注意循环条件,以避免无限循环。在本例中,循环条件 i >= 0 保证了循环会在 i 的值变为 0 后终止。
四、以下代码执行的结果是?
int main(){ char a[1000]; for(int i=0;i<1000;i++){ a[i] = -1-i; } printf("%d",strlen(a)); return 0;}
解析:结果是255。
i每次加一,在负一的基础上开始减i。因为数组是char类型,所以会根据ASCII码对应的字符进行填充。在减去到-128之后因为补码的截断和整型提升的原因,补码的值得到相应的数就是127(进入了循环圈)。之后继续126、125······知道减到0此时ASCII码表对应的字符是’\0’,也就是我们字符串结束的标志。所以在执行strlen的时候就得到的字符串的长度是255+1-1 = 255。(加一是因为0没有计算,减一是因为’\0’不计算到字符串内)。
嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全! 点击这里找小助理免费领取学习资料:扫码进群领资料
标签: #linux的求和c语言