Amit Razdan Ответов: 1

Эта проблема связана с языком Си. Пожалуйста, дайте мне правильное объяснение.


#include<conio.h>
#include<stdio.h>
void main()
{
 int a;
 float b;
 a=1/3+1/3+1/3;
 printf("%d",a);
 getch();
 return;
}





здесь выход равен :0
вместо 1 Почему??????????????

Что я уже пробовал:

я разработал этот код в turbo c++
но почему выход всегда равен 0 вместо 1???????

1 Ответов

Рейтинг:
12

CPallini

Потому что 1/3 вычисляется с использованием целочисленного деления.

#include <stdio.h>
int main()
{
  int a;
  float b;
  b = 1.0f / 3 + 1.0f / 3 + 1.0f / 3;
  a = (int) b;
  printf("%d, %f\n",a, b);
  getchar();
  return 0;
}


И, пожалуйста, прекратите использовать turbo C (это было хорошо около 30 лет назад). Используйте современный компилятор.


Peter_in_2780

Вы все еще можете получить 0! Выражение для b будет вычисляться примерно как 1.0 - (один lsb)

Amit Razdan

поблагодарить у очень многое, сэр.....

CPallini

Добро пожаловать.