下面程序输出为() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <stdio.h> int fun(int a) { int b = 0; static int c = 3; b++; c++; return (a+b+c); } int main( ) { int i=0; for(; i < 3; i++) printf("%d",fun(2)); return 0; }为什么结果为789
时间: 2024-04-06 16:33:20 浏览: 55
程序的输出结果为 789。
程序中的 fun 函数中有一个静态变量 c,它的初始值为 3,每当 fun 函数被调用时,c 的值都会加 1。在 main 函数中,通过循环调用了三次 fun 函数,每次传入的参数均为 2。 在第一次调用 fun 函数时,a=2,b=1,c=4,返回值为 7; 在第二次调用 fun 函数时,a=2,b=1,c=5,返回值为 8; 在第三次调用 fun 函数时,a=2,b=1,c=6,返回值为 9。
因此,循环结束后程序输出的结果就是 789。
相关问题
#include <stdio.h> int fun(int x)
#include <stdio.h> 是C语言中的一个预处理指令,它告诉编译器在编译过程中要包含stdio.h头文件。stdio.h是标准输入输出库的头文件,其中包含了一些常用的输入输出函数的声明,比如printf和scanf。
int fun(int x) 是一个函数的声明,它定义了一个名为fun的函数,该函数接受一个整数参数x,并返回一个整数值。函数声明告诉编译器函数的名称、参数类型和返回类型,但不包含函数的具体实现。
#include<stdio.h> #include<stdlib.h> #include<assert.h> #include<string.h> #include<unistd.h> #include<pthread.h> int var=0; void *fun(void *); int main() { pthread_t id; int res = pthread_create(&id,NULL,fun,NULL); assert(res == 0); for(int i = 0;i < 10000; i++) { var++; printf("parent is %d\n",var); } exit(0); } void* fun(void *arg) { for(int i = 0;i < 10000; i++) { var--; printf("child is %d\n",var); } }
这是一个使用 pthread 线程库的 C 语言程序,其中包含了一个主线程和一个子线程。
主函数中创建了一个线程 id,并调用 pthread_create 函数创建一个新的线程。该函数的第一个参数是线程 id,第二个参数是线程属性,第三个参数是线程函数,最后一个参数是传给线程函数的参数。在这个程序中,线程属性为 NULL,线程函数为 fun,传递的参数为 NULL。
主线程和子线程都有一个 for 循环,循环的次数为 10000,每次循环都将变量 var 的值加一或减一,并输出当前的 var 值。可以看到,主线程和子线程交替执行,输出的结果也是交替的。
由于主线程和子线程是并发执行的,因此输出的结果可能会出现不同的顺序,这是正常的现象。
阅读全文