啊哈磊_编程从这里起步

标题: 新人问题 [打印本页]

作者: shaoshao    时间: 2014-1-22 16:38
标题: 新人问题
#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

作者: shaoshao    时间: 2014-1-22 16:42
变量写错了 应该写成 int
作者: 981013    时间: 2014-1-23 13:52
本帖最后由 981013 于 2014-1-23 13:59 编辑

%d是整型变量的格式控制符,用于输出float型数据时,结果肯定是错误的(输出好像有一定规律,求高人讲解)。
输出float型数据可以用格式控制符%f(表示为******.******[*代表数字,下同])、%e(*.******e+[或-]***,其实就是科学计数法,即 前一个数 乘 10的后一个数次幂)或%g(自动选择%f和%e中较短的一个,在部分环境下会去掉末尾无效的0)
作者: shaoshao    时间: 2014-1-23 15:36
本帖最后由 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秒就关闭了 在线等解答
作者: 981013    时间: 2014-1-24 12:40
本帖最后由 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,则编译器会报错,指出不能给常量赋值。
当然这是个人习惯问题,即使你不采用这种方法,习惯了=与==的用法后也会减少这种问题的发生。


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

-Werror
if(a=1)也会报错
作者: 李掌柜    时间: 2014-2-2 00:33
楼主,您好~!
你声明的a是浮点型float,
输入时把类型输入成了整型%d,
要保持类型相同%f
作者: Amath13    时间: 2014-2-3 20:28
printf ("%f", a);
作者: baibian11    时间: 2014-2-14 12:13
#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;
}





欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2