Tag: 概念

通过一个简单的例子来理解C的fork()

#include int num = 0; int main(int argc, char*argv[]){ int pid; pid = fork(); printf(“%d”, num); if(pid == 0){ /*child*/ num = 1; }else if(pid > 0){ /*parent*/ num = 2; } printf(“%d”, num); } 我无法理解为什么可能的输出是0102或0012或0201或0021。 这是我认为它应该产生的东西。 它命中第一个printf语句,无论先执行什么子项或父项,num都没有被修改,所以首先是0。 然后接下来是1或2,然后执行下一个过程,所以再次从0开始(从父模块复制),然后再次从1或2开始。 所以可能的输出应该是: 0101或0102或0201或0202

写交流函数,产生一个随机数,或一对随机数,或给定特定范围的随机数的三元组

我必须为3个不同的案例生成随机数。 一世。 1个骰子ii。 一对骰子iii。 我的问题是:1。请建议我使用良好的逻辑来生成所有3个案例的随机数。 2.当我考虑2个骰子的而不是1时,逻辑会改变吗? 3.我们必须生成一个随机数的范围会影响随机函数的逻辑吗?

汇编中如何为无符号整数分配负数?

我学会了2’s Complement和未签名并签署了int。 所以我决定测试我的知识,据我所知,负数以2’s complement方式存储,因此加法和减法不会有不同的算法和电路会很简单。 现在,如果我写 int main() { int a = -1 ; unsigned int b = – 1 ; printf(“%d %u \n %d %u” , a ,a , b, b); } 输出结果为-1 4294967295 -1 4294967295 。 现在,我看了位模式和各种事情,然后我意识到2的补码中的-1是11111111 11111111 11111111 11111111 ,所以当我用%d解释它时,它给出-1 ,但是当我使用%u解释时,它将其视为正数,因此它给出了4294967295 。 我检查了程序集的代码是 .LC0: .string “%d %u \n %d %u” main: push rbp […]