Корректно ли приведенное преобразование типов - C (СИ)

  1. Здравствуйте!C1 2 3 4     int p;     float d = 2.54f;     float rezult;     rezult = p * d;Подскажите пожалуйста, насколько я знаю в данной операции тип int автоматически будет повышен до float, не произойдет ли "что нибудь нехорошее" при данном преобразовании. Вообще корректно ли использование разных типов данных в одной операции?


textual

Код к задаче: «Корректно ли приведенное преобразование типов - C (СИ)»

float pi1 = 3.14;
int pi2 = pi1;
/*В pi2 будет записано 3, а дробную часть мы безвозвратно потеряем*/

СДЕЛАЙТЕ РЕПОСТ

9   голосов, оценка 3.667 из 5



Похожие ответы
  1. Задана последовательность из N вещественных чисел. Определить сколько чисел меньше K, равно K и больше K. (массив random )

  1. Нужно задать строку из букв, цифр и так далее и сделать так, чтобы программа вывела на экран каких гласных букв нет в этой строке. Помогите либо начать, либо направьте где можно почитать про это, на форуме может кто видел подобные задания? Заранее спасибо!

  1. zss, Спасибо! Скажите, вот хочу что бы он мне выводил данные, фамилии которых начинается на букву В, Г, Д. Он не показывает, подскажете почему?C++ (Qt)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 #include #include #include #include struct TZap { char FIO[30];   double s_b, mat, xum, inf, fiz, gr, god; } Zap; int size = sizeof(TZap); FILE *Fz, *Ft; char File_Zap[] = "zapisi.dat"; char File_Rez[] = "rezult.txt"; void Out(TZap);   int main() { int kod, D_f, i = 0, j, kol;   double s_b, mat, xum, inf, fiz, gr, god; long len; TZap st, *mas_Z; Ft = fopen(File_Rez, "w"); while (true) { puts("\n Create - 1\n Add - 2\n View - 3\n Sort - 4\n EXIT - 0"); scanf("%d", &kod); switch (kod) { case 1: if ((Fz = fopen(File_Zap, "wb")) == NULL) { puts("\n Create ERROR!"); //return; } fclose(Fz); printf("\n Create New File %s !\n", File_Zap); break; case 2: Fz = fopen(File_Zap, "ab"); printf("\n F.I.O. - "); fflush(stdin); gets(Zap.FIO); printf(" God rozdeniya - "); fflush(stdin); scanf("%lf", &Zap.god); printf(" Nomer gruppi - "); scanf("%lf", &Zap.gr); printf(" Fizika - "); scanf("%lf", &Zap.fiz); printf(" Matematika - "); scanf("%lf", &Zap.mat); printf(" Informatika - "); scanf("%lf", &Zap.inf); printf(" Xumuya - "); scanf("%lf", &Zap.xum);   Zap.s_b = (Zap.fiz + Zap.mat + Zap.inf + Zap.xum) / 4;   fwrite(&Zap, size, 1, Fz); fclose(Fz); break; case 3: if ((Fz = fopen(File_Zap, "rb")) == NULL) { puts("\n Open ERROR!"); //return; } // printf("\n\t —-----------------— Informations —-------------------\n"); printf("\n\t FIO , god ,nomer gr, fiz , mat , inf , xum ,sredball\n"); // fprintf(Ft, "\n\t —-----------------— Informations —-------------------"); while (1) { if (!fread(&Zap, size, 1, Fz)) break; Out(Zap); } fclose(Fz); break; case 4: Fz = fopen(File_Zap, "rb"); D_f = fileno(Fz); len = filelength(D_f); kol = len / size; mas_Z = new TZap[kol]; // for (i = 0; i < kol; i++) fread((mas_Z + i), size, 1, Fz); fclose(Fz); printf("\n\t---— S O R T —---\n"); fprintf(Ft, "\n\t---— S O R T —---\n"); for (i = 0; i < kol - 1; i++) if ((mas_Z[i].FIO[0] == 'В') && (mas_Z[i].FIO[0] == 'Г') && (mas_Z[i].FIO[0] == 'Д')) //&& ((mas_Z[i].mat == 8) || (mas_Z[i].mat == 9))) //888 { } for (i = 0; i < kol; i++) Out(mas_Z[i]);   delete[]mas_Z; break; case 0: fclose(Ft); //888 //return; }     } }     void Out(TZap z) { printf("\n %20s , %6.0lf , %6.0lf , %6.3lf , %6.3lf , %6.3lf , %6.3lf , %6.3lf", z.FIO, z.god, z.gr, z.fiz, z.mat, z.inf, z.xum, z.s_b); fprintf(Ft, "\n %20s , %6.0lf , %6.0lf , %6.3lf , %6.3lf , %6.3lf , %6.3lf , %6.3lf", z.FIO, z.god, z.gr, z.fiz, z.mat, z.inf, z.xum, z.s_b); }Добавлено через 1 минутуQwerty_Wasd, Спасибо! Скажите, вот хочу что бы он мне выводил данные, фамилии которых начинается на букву В, Г, Д. Он не показывает, подскажете почему?C++ (Qt)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 #include #include #include #include struct TZap { char FIO[30];   double s_b, mat, xum, inf, fiz, gr, god; } Zap; int size = sizeof(TZap); FILE *Fz, *Ft; char File_Zap[] = "zapisi.dat"; char File_Rez[] = "rezult.txt"; void Out(TZap);   int main() { int kod, D_f, i = 0, j, kol;   double s_b, mat, xum, inf, fiz, gr, god; long len; TZap st, *mas_Z; Ft = fopen(File_Rez, "w"); while (true) { puts("\n Create - 1\n Add - 2\n View - 3\n Sort - 4\n EXIT - 0"); scanf("%d", &kod); switch (kod) { case 1: if ((Fz = fopen(File_Zap, "wb")) == NULL) { puts("\n Create ERROR!"); //return; } fclose(Fz); printf("\n Create New File %s !\n", File_Zap); break; case 2: Fz = fopen(File_Zap, "ab"); printf("\n F.I.O. - "); fflush(stdin); gets(Zap.FIO); printf(" God rozdeniya - "); fflush(stdin); scanf("%lf", &Zap.god); printf(" Nomer gruppi - "); scanf("%lf", &Zap.gr); printf(" Fizika - "); scanf("%lf", &Zap.fiz); printf(" Matematika - "); scanf("%lf", &Zap.mat); printf(" Informatika - "); scanf("%lf", &Zap.inf); printf(" Xumuya - "); scanf("%lf", &Zap.xum);   Zap.s_b = (Zap.fiz + Zap.mat + Zap.inf + Zap.xum) / 4;   fwrite(&Zap, size, 1, Fz); fclose(Fz); break; case 3: if ((Fz = fopen(File_Zap, "rb")) == NULL) { puts("\n Open ERROR!"); //return; } // printf("\n\t —-----------------— Informations —-------------------\n"); printf("\n\t FIO , god ,nomer gr, fiz , mat , inf , xum ,sredball\n"); // fprintf(Ft, "\n\t —-----------------— Informations —-------------------"); while (1) { if (!fread(&Zap, size, 1, Fz)) break; Out(Zap); } fclose(Fz); break; case 4: Fz = fopen(File_Zap, "rb"); D_f = fileno(Fz); len = filelength(D_f); kol = len / size; mas_Z = new TZap[kol]; // for (i = 0; i < kol; i++) fread((mas_Z + i), size, 1, Fz); fclose(Fz); printf("\n\t---— S O R T —---\n"); fprintf(Ft, "\n\t---— S O R T —---\n"); for (i = 0; i < kol - 1; i++) if ((mas_Z[i].FIO[0] == 'В') && (mas_Z[i].FIO[0] == 'Г') && (mas_Z[i].FIO[0] == 'Д')) //&& ((mas_Z[i].mat == 8) || (mas_Z[i].mat == 9))) //888 { } for (i = 0; i < kol; i++) Out(mas_Z[i]);   delete[]mas_Z; break; case 0: fclose(Ft); //888 //return; }     } }     void Out(TZap z) { printf("\n %20s , %6.0lf , %6.0lf , %6.3lf , %6.3lf , %6.3lf , %6.3lf , %6.3lf", z.FIO, z.god, z.gr, z.fiz, z.mat, z.inf, z.xum, z.s_b); fprintf(Ft, "\n %20s , %6.0lf , %6.0lf , %6.3lf , %6.3lf , %6.3lf , %6.3lf , %6.3lf", z.FIO, z.god, z.gr, z.fiz, z.mat, z.inf, z.xum, z.s_b); }

  1. Помогите пожалуйста с программой. Что-то не так, не могу понять, что именно.C1 2 3 4 5 6 7  struct card { /* масть карт */ enum {spades, clubs, diamonds, hearts} suit; /* достоинство карт */ enum {six, seven, eight, nine, ten, jack, queen, king, ace} value; } c1, c2;Описать логическую функцию Kick(с1, с2, сs), проверяющую, бьёт ли карта с1 карту с2, с учётом того, что масть cs является козырной.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 #include "stdafx.h" #include #include #include #include struct card {     /*масть карт */     enum { пики, трефы, бубны, червы } mast;     /* достоинство карт */     enum { шесть, семь, восемь, девять, десять, валет, дама, король, туз } dost; } c1, c2;   int Kick(card c1, card c2, char cs); /*--------------------------------------------------------------------*/ /*Основная часть программы*/ int main(void) {     char cs=0;     int k;     setlocale(LC_ALL, "Russian");     printf("Введите масть 1 карты - ");     scanf("%lf\n", &c1.mast);               printf("Введите достоинство 1 карты - ");     scanf("%lf\n", &c1.dost);     printf("Введите масть 2 карты - ");     scanf("%lf\n", &c2.mast);     printf("Введите достоинство 2 карты - ");     scanf("%lf\n", &c2.dost);     printf("Введите масть козырной карты - ");     scanf("%lf\n", &cs);     Kick(c1,c2,cs);     return 0; }   int Kick(card c1, card c2,  char cs) {     char k;   k = ((c1.mast == cs) && (c2.mast != cs)) || ((c1.mast == c2.mast) && (c1.dost < c2.dost));     if (c1.mast == c2.mast)         //если масти одинаковые             if (c1.dost > c2.dost) return 1;         else         {             return 0;         }     else                //если масти не одинаковые     {         if (c1.mast == cs)     //если козырь             return 1;         else             return 0;     } }

  1. Добрый вечер! Дан массив M*N. Необходимо отсортировать ее по строкам так, чтобы вначале шли все положительные элементы, отсортированные по убыванию, а затем все остальные, отсортированные по возрастанию (если в строке имеются нули - переставить их в конец строки). Вывести получившуюся матрицу. У меня проблема с перестановкой нулей. C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 #include     int main()     {   int N, M,t, i,j,k, mas[10][10]={0}, q;         printf("VVEDITE N,M \n");     scanf("%d%d", &N,&M);     printf("VVEDITE MASSIV \n");       for (i=0; i < N; i++)        for (j=0; j < M; j++)            scanf ("%d", &mas[i][j]);       for(k = 0; k < N; k++){     for(i = 0 ; i < M; i++){         for(j = i + 1; j < M; j++){               if((mas[k][i] < mas[k][j]) && (mas[k][i]!=0)){                       t = mas[k][i];                     mas[k][i] = mas[k][j];                     mas[k][j] = t;               }         }     } }   if (mas[i][j]<0) {     } {   for(k = 0; k < N; k++){         for(i = 0 ; i < M; i++){             for(j = i + 1; j < M; j++){                   if(mas[k][i] < mas[k][j]) {                       t = mas[k][i];                     mas[k][i] = mas[k][j];                     mas[k][j] = t;               }         }     } } } for(i = 0 ; i < M; i++)     {         for(j = 0; j < M; j++)             if (mas[i][j]==0)         {                 for ( q = j; q < N-1 ; q++)                 {                     mas[i][q] = mas[i][q + 1];                 }                 mas[N-1][M-1] = 0;           }     }   for (i=0; i < N; i++)        {for (j=0; j < M; j++)               printf ("%d\t", mas[i][j]);        printf (" \n");}   getch();}

  1. Нужно что бы он считал количество заглавных буквC1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include #include #include #include void main() {     char s[250];     int i, kol = 0, kol1 = 0, j;     puts("Enter string");     fgets(s, 250, stdin); ("%s", s);     i = 0;     j = 0;     for (i = 0; i

  1. Дан лист, написать программу реверс лист(Обратный порядок).

  1. Точная степень двойки Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или слово NO в противном случае. Операцией возведения в степень пользоваться нельзя! РешениеJava1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 public class Solution {     public static int recursion(double n) {         // Базовый случай         if (n == 1) {             return 1;         } // Базовый случай         else if (n > 1 && n < 2) {             return 0;         } // Шаг рекурсии / рекурсивное условие         else {             return recursion(n / 2);         }     }     public static void main(String[] args) {         double n = 64;         // вызов рекурсивной функции         if (recursion(n) == 1) {             System.out.println("Yes");         } else {             System.out.println("No");         }

  1. Всем привет, помогите пожалуйста решить задачу Задание: Написать программу для расчета по двум формулам. Результат вычисления по первой формуле должен совпадать со второй. Использовать операции потокового ввода-вывода.

  1. Помогите пожалуйста. Использовать стандартные функции и арифметические операторы; изучить операторы отношения и присваивания, логические операции, условный оператор и оператор-переключатель; научиться использовать в программах операторы цикла. Написать программы на изученные темы. Определить, сколько цифр содержит заданное целое число и имеются ли в нем повторяющиеся цифры.