struct 程序gcc运行结果

#include<stdio.h>

#include<stdlib.h>



typedef struct{

	int a[2];

	double d;

}struct_t;



double fun(int i){

	volatile struct_t s;

	s.d = 3.14;

	s.a[i] = 1073741824;/*Possibly out of bounds*/

	return s.d;/*Should be 3.14*/

}



int main(int argc,char *argv[]){

	int i = 0;

	if(argc>=2)

	i = atoi(argv[1]);

	double d = fun(i);

	printf("fun(%d) -->%.10f\n",i,d);

	return 0;

结论:由运行结果可知,输出的数字并不全是3.14,这是由于数据多次入栈,数组会溢出,所以结果中并不是全都是3.14,会有错误的结果产生。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
串口通信程序可以用不同的编程语言实现,例如C、C++、Python等。这里以C语言为例,介绍如何编写、编译和运行串口通信程序。 1. 编写串口通信程序 首先需要打开一个串口,并设置相应的参数,例如波特率、数据位、停止位、校验位等。然后可以使用串口读写函数来进行数据的发送和接收。下面是一个简单的示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <fcntl.h> #include <termios.h> #define SERIAL_PORT "/dev/ttyUSB0" // 串口设备名称 #define BAUD_RATE B115200 // 波特率 int main() { int fd = open(SERIAL_PORT, O_RDWR | O_NOCTTY | O_NDELAY); if (fd == -1) { perror("open serial port error!"); return -1; } // 配置串口 struct termios options; tcgetattr(fd, &options); cfsetispeed(&options, BAUD_RATE); cfsetospeed(&options, BAUD_RATE); options.c_cflag |= (CLOCAL | CREAD); options.c_cflag &= ~CSIZE; options.c_cflag |= CS8; options.c_cflag &= ~PARENB; options.c_cflag &= ~CSTOPB; tcsetattr(fd, TCSANOW, &options); // 发送数据 char send_buf[] = "hello world"; write(fd, send_buf, strlen(send_buf)); // 接收数据 char recv_buf[1024] = {0}; int len = read(fd, recv_buf, sizeof(recv_buf)); printf("received data: %s\n", recv_buf); close(fd); return 0; } ``` 2. 编译串口通信程序 使用gcc编译器可以对上述代码进行编译,命令如下: ```bash gcc -o serial_comm serial_comm.c ``` 其中,serial_comm是生成的可执行文件名,serial_comm.c是源代码文件名。 3. 运行串口通信程序 编译生成可执行文件后,可以直接运行程序: ```bash ./serial_comm ``` 如果串口通信正常,将会输出接收到的数据。如果出现问题,可以根据错误信息进行排查。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值