sigmoid的输出(void main输出结果)

sigmoid的输出(void main输出结果)Q printf 和 scanf 的返回值是什么 int main int i 43 int n printf d i printf d n return 0 A printf 函数返回 3 由于其输出了 4 3 三个字符 printf 返回的是成功输出到 STDOUT 的字符数 假设错误发生 返回一个负数 scanf 返回的是成功赋值的变量个数



Q:printf和scanf的返回值是什么?

int main() { int i = 43; int n = printf("%d ",i); printf("%d ",n); return 0; } 

A:printf函数返回3。由于其输出了‘4‘, ‘3‘, ‘ ‘ 三个字符。

Q:此段程序希望输出数组中的全部素。但却没有得到想要的结果,是什么产生歧义?

#include <stdio.h> #define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0])) int array[] = {23,34,12,17,204,99,16}; int main() { int d; for(d=-1;d <= (TOTAL_ELEMENTS-2);d++) printf("%d ",array[d+1]); return 0; } 

A:执行上面的程序。结果是什么都没有输出,导致这个结果的原因是sizeof的返回值是一个unsinged int,为此在比較int d 和TOTAL_ELEMENTS两个值都被转换成了unsigned int来进行比較,这样就导致-1被转换成一个很大的值,以至于for循环不满足条件。因此,假设不能理解sizeof操作符返回的是一个unsigned int的话,就会产生类似如上的歧义。

Q:以下这段程序的输出结果是:

#include <stdio.h> #define f(a,b) ab #define g(a) #a #define h(a) g(a) int main() { printf("%s ", h(f(1,2))); printf("%s ", g(f(1,2))); return 0; } 

对于h(f(1,2)),由于h(a)是非#或的普通宏。须要先宏展开其參数a,即展开f(1,2)为12,则h(a) 宏替换为h(12)。进而宏替换为g(12), 进而宏替换为"12"。

Q:假如我们的a的地址是:0Xbfe2e100, 并且是32位机,那么这个程序会输出什么?

#include <stdio.h> int main() { int a[5]; printf("%x ", a); printf("%x ", a+1); printf("%x ", &a); printf("%x ", &a+1); return 0; }

Q:例如以下代码为什么结果始终不正确?

#include <stdio.h> int main() { int a = 2; if(a & 1 == 0) printf("a & 1 == 0"); else printf("a & 1 != 0"); return 0; }

(优先级:==和!= 高于 & 高于 ^ 高于 | 高于 && 高于 || )。

优先级从高到低:算术运算符,位移运算符,关系运算符,位操作& ^ |

Q:例如以下代码输出什么?

int main() { int i = 6; if( ((++i < 7) && ( i++/6)) || (++i <= 9)); printf("%d ",i); return 0; }

A:8。本题主要考的是&&和||的短路求值的问题。所为短路求值:对于(条件1 && 条件2)。假设“条件1”是false,那“条件2”的表达式会被忽略了。对于(条件1 || 条件2),假设“条件1”为true,而“条件2”的表达式则被忽略了。

Q:sizeof后面能够跟表达式,以下的代码,为什么i++无效呢?

#include <stdio.h> int main() { int i = 1; sizeof(i++); printf("%d ", i); return 0; }

Q:以下的程序试图使用“位操作”来完毕“乘5”的操作,只是这个程序中有个BUG,你知道是什么吗?

#include <stdio.h> #define PrintInt(expr) printf("%s : %d ",#expr,(expr)) int FiveTimes(int a) { int t; t = a<<2 + a; return t; } int main() { int a = 1; PrintInt(FiveTimes(a)); return 0; }

A:本题的问题在于函数FiveTimes中的表达式“t = a<<2 + a;”,对于a<<2这个位操作,优先级要比加法要低,所以这个表达式就成了“t = a << (2+a)”,于是我们就得不到我们想要的值。

该程序修正例如以下:“t = (a<<2) + a;”

Q:例如以下代码关于位运算符的操作为何终于结果和预期不符?

#include <stdio.h> int main() { unsigned char c = 0xfc; unsigned int i = ~c; printf("%x ",i); return 0; }

上面的变量c是无符号字符型,在进行~位运算时,是首先提升为整形,即为0x000000fc, 然后取反得到0xffffff03, 所以i得到的数值是这个。同理。假设c是char类型。提升为整形时为0xfffffffc。再取反得到的就是0x03。事实上变量被提升有非常多地方。比方short计算时也会提升为int再继续计算。

Q:以下这个程序运行后会有什么错误或者效果:

#define MAX 255 int main() { unsigned char A[MAX]; unsigned chat i; for (i = 0; i <= MAX; i++) A[i] = i; }
#define MAX(a,b) ((((a)-(b))&(1<<31))?(b):(a))

Q:定义一个宏,求一个结构体struct中某个变量相对于struct的偏移量

A:#define OFFSET(struct, member) ((unsigned int)&((struct *)0)->member)

Q:求不小于x的最小的2的K次方的数:

int pow2_ceil(unsigned int x) { x--; x |= x >> 1; x |= x >> 2; x |= x >> 4; x |= x >> 8; x |= x >> 16; x++; return x; }

请看下面情形:A线程将变量复制入寄存器,然后进入循环,重复检測寄存器的值是否满足一定条件。它期待B线程改变变量的值。在此种情况下,当B线程改变了变量的值时。已改变的值对其在寄存器的值没有影响。所以A线程进入死循环。

几道C笔试题

今天的文章 sigmoid的输出(void main输出结果)分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2026-03-08 18:06
下一篇 2026-03-08 17:57

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/51591.html