| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2251 人关注过本帖
标题:这是为什么啊,没啥问题啊
只看楼主 加入收藏
暴君Dentiny
Rank: 2
等 级:论坛游民
帖 子:132
专家分:43
注 册:2019-5-6
结帖率:89.47%
收藏
已结贴  问题点数:20 回复次数:7 
这是为什么啊,没啥问题啊
程序代码:
//#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main()
{
    struct data
    {
        int a;
        char b[60];
        float c;

    }data1;

    data1.a = 60;
    strcpy(data1.b, "zhuang");
    data1.c = 1.99;
    printf("%-d\t%-s\t%- 3.3f", data1.a,data1.b,data1.c);
    printf("%f",data1.a+data1.c );
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册
为什么会这样
搜索更多相关主题的帖子: int printf strcpy include float 
2019-09-05 22:24
bcbbcclbbc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:194
专家分:528
注 册:2019-8-15
收藏
得分:4 
图片附件: 游客没有浏览图片的权限,请 登录注册

 
图片附件: 游客没有浏览图片的权限,请 登录注册

网站首页上的在线编程
这运行似乎没什么大问题

[此贴子已经被作者于2019-9-6 12:15编辑过]

2019-09-06 12:11
Mr_doge
Rank: 5Rank: 5
等 级:贵宾
威 望:10
帖 子:159
专家分:385
注 册:2018-6-28
收藏
得分:4 
如果是使用VS编译,很多由编译器实现的隐式转换都会给你报警告,需要使用匹配的对应变量类型才能参与运算,VS在语法规则上和C90标准有很多细节差异,使用gcc编译的话很多细节就会由编译器隐式处理了,至于VS的C++编译器为何会加入大量的语法细节限制,个人猜测应该是当年使用C和C艹构建系统踩了很多坑之后留下了的传统
另外VS编译器使用的是VC++编译器而不是C编译器,在一些细节上C++和C也是有差异的
2019-09-06 15:53
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:4 
该程序没问题,运行结果如下:
60      zhuang    1.99061.990000
(注:我用的编译器是devcpp)
2019-09-07 21:15
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1694
专家分:4282
注 册:2007-12-27
收藏
得分:4 
需要澄清的是,绝大多数能运行并取得预期结果的程序都不是没问题的。
没问题是级别很高的正确,不要轻易这样判断。
软件环境,硬件环境,网络环境和用户操作都有可能使一个看起来“没问题”的程序出现这样那样的问题。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2019-09-07 22:34
zhouaichun
Rank: 2
等 级:论坛游民
帖 子:8
专家分:18
注 册:2015-4-6
收藏
得分:4 
该程序没问题,运行结果如下:
图片附件: 游客没有浏览图片的权限,请 登录注册

用C-Free5编译
2019-09-10 15:41
c小白2333
Rank: 5Rank: 5
来 自:中国
等 级:贵宾
威 望:11
帖 子:121
专家分:367
注 册:2019-6-17
收藏
得分:4 
程序代码:
#include<stdio.h>
#include<string.h>
int main()
{
    struct data
    {
        int a;
        char b[60];
        double c;

    }data1;

    data1.a = 60;
    strcpy(data1.b, "zhuang");
    data1.c = 1.99;
    printf("%-d\t%-s\t%-3.3f", data1.a, data1.b, data1.c);
    printf("%f", data1.a + data1.c);
    return 0;
}

float 改成double
项目-属性-c/c++常规-SDL检查-否
你的程序在你的编译器上就能运行了

宝剑锋从磨砺出,梅花香自苦寒来。
2019-09-10 19:46
c小白2333
Rank: 5Rank: 5
来 自:中国
等 级:贵宾
威 望:11
帖 子:121
专家分:367
注 册:2019-6-17
收藏
得分:0 
或者加上  你前面的那个就行了
#define _CRT_SECURE_NO_WARNINGS
strcpy 和 scanf应该属于一类问题
都是不安全的提示
scanf的安全用法是用scanf_s函数
或者就上面的两种改法
关于scanf_s的用法前面的帖子里有人问了  你可以看一下

宝剑锋从磨砺出,梅花香自苦寒来。
2019-09-10 19:52
快速回复:这是为什么啊,没啥问题啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042565 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved