搜索
查看: 854|回复: 8
打印 上一主题 下一主题

新人问题

[复制链接]
跳转到指定楼层
楼主
发表于 2014-1-22 16:38:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{

float a;
    a=10;
    a=a*a;
    printf("%d",a);
    Sleep(5000);
return 0;
}

为毛输出是0

沙发
 楼主| 发表于 2014-1-22 16:42:14 | 只看该作者
变量写错了 应该写成 int

评分

参与人数 1啊哈币 +3 收起 理由
李掌柜 + 3 赞一个!

查看全部评分

板凳
发表于 2014-1-23 13:52:12 | 只看该作者
本帖最后由 981013 于 2014-1-23 13:59 编辑

%d是整型变量的格式控制符,用于输出float型数据时,结果肯定是错误的(输出好像有一定规律,求高人讲解)。
输出float型数据可以用格式控制符%f(表示为******.******[*代表数字,下同])、%e(*.******e+[或-]***,其实就是科学计数法,即 前一个数 乘 10的后一个数次幂)或%g(自动选择%f和%e中较短的一个,在部分环境下会去掉末尾无效的0)
地板
 楼主| 发表于 2014-1-23 15:36:12 | 只看该作者
本帖最后由 shaoshao 于 2014-1-23 15:37 编辑

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
        int a;
    printf("请输入你想输入的字符 按回车即可\n");
    printf("---------------------------\n");
    scanf("%d",&a);
    if(a>0)                printf("yes",a);
    if(a<0)                printf("no",a);
    if(a=0)                printf("0",a);
   
    Sleep(5000);
        return 0;
}
为毛输入0 什么都不显示呢 然后5秒就关闭了 在线等解答
5#
发表于 2014-1-24 12:40:32 | 只看该作者
本帖最后由 981013 于 2014-1-24 12:55 编辑
shaoshao 发表于 2014-1-23 15:36
#include
#include
#include


a=0意为把0赋给变量a,此时该表达式的值始终为0,因此3个if都不匹配,程序直接开始执行Sleep(5000);然后退出。
解决方法:把a=0改为a==0
记住“=”是用来赋值的,叫赋值运算符,此时表达式的值就是赋给变量的那个值,如上例中表达式的值为0,又如
  1. int a;
  2. if(a=1)
  3. {
  4. //……
  5. }
复制代码
此时a=1这句的值就是1,因而……处的语句始终会被执行,若把if换成while等,还会造成死循环。
“==”才是用来判断两个值是否相等的运算符,若==左边的值等于它右边的值,则返回1(表示通过,或者也可以理解为正确),否则返回0(意思同1相反)

为了避免这种问题,可以把判断大小的语句写成如下形式:
  1. if(1==a)
  2. {
  3. //……
  4. }
复制代码
这样若误写成1=a,则编译器会报错,指出不能给常量赋值。
当然这是个人习惯问题,即使你不采用这种方法,习惯了=与==的用法后也会减少这种问题的发生。

评分

参与人数 1啊哈币 +2 收起 理由
李掌柜 + 2 很给力!

查看全部评分

6#
发表于 2014-1-24 17:00:57 | 只看该作者
981013 发表于 2014-1-24 12:40
a=0意为把0赋给变量a,此时该表达式的值始终为0,因此3个if都不匹配,程序直接开始执行Sleep(5000);然 ...

-Werror
if(a=1)也会报错
7#
发表于 2014-2-2 00:33:04 | 只看该作者
楼主,您好~!
你声明的a是浮点型float,
输入时把类型输入成了整型%d,
要保持类型相同%f
8#
发表于 2014-2-3 20:28:09 | 只看该作者
printf ("%f", a);
9#
发表于 2014-2-14 12:13:02 | 只看该作者
#include <stdio.h>
#include <stdlib.h>
int main()
{
        int a,b;           int是代表整数   float是浮点数 10是整数
    a=10;
    b=a*a;
    printf("%d",b);                                            printf输出结果b
     
        system("pause");
        return 0;
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表