Přetypování. – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Přetypování. – C / C++ – Fórum – Programujte.comPřetypování. – C / C++ – Fórum – Programujte.com

 

jisla
~ Anonymní uživatel
23 příspěvků
26. 9. 2008   #1
-
0
-

Mohu přetypovat 'float' na 'int' ? Pokud ano uveďte prosím jednoduchý příklad.

Děkuji. Jisla

Nahlásit jako SPAM
IP: 195.39.96.–
Bald3rr0
Super člen
26. 9. 2008   #2
-
0
-

Jednoduše.

#include <iostream>


int main()
{
std::cout << "Zadej desetine cislo: ";
float desetine;
std::cin >> desetine;
int cele;
cele = desetine;
std::cout << "Cele cislo je: " << cele;
return 0;
}

Nahlásit jako SPAM
IP: 82.100.0.–
26. 9. 2008   #3
-
0
-

Prostě přiřadíš do proměnné typu integer float hodnotu. Desetinná část se uřízne (pozor, nezaokrouhlí, jenom uřízne => 9.999999999999999999 bude pořád jenom 9).

Nahlásit jako SPAM
IP: 83.240.78.–
Podpis: Do podpisu nelze vložit obrázky ani HTML kód. Je podporován nový řádek tagem
.
jisla
~ Anonymní uživatel
23 příspěvků
26. 9. 2008   #4
-
0
-

Děkuji,

Nahlásit jako SPAM
IP: 195.39.96.–
Marin
~ Anonymní uživatel
5 příspěvků
23. 9. 2024   #5
-
0
-

 Zdravím, mám jednoduchý kód a není mi jasné jak a kde se provede přetypování proměnné a, která vstupuje jako jednobajtová, ale aniž by byla přetypovaná, tak se z ní po bitovém posunu stane dvoubajtová? Výsledek je 0xABCD, ale v při tom bitovém posunu bych očekával, že se registr postupně vyprázdní do nuly a výsledek bude jen 0xCD. 

int main(void) {

  unsigned char a = 0xAB;
  unsigned char b = 0xCD;

  unsigned short x = ((a << 8) | b);

  printf("Answer is 0x%.4X", x);
  
  return 0;
}
Nahlásit jako SPAM
IP: 193.179.60.–
BDS+3
Věrný člen
23. 9. 2024   #6
-
0
-

#5 Marin
Myslím, že jde o to, že bitový posun se vrací jako int, proto ty posunem o 8 pouze doplníš nuly do vyšších hodnot, takže je to pak ignoruje a tak to vypadá, že se nic nezměnilo.

Vidíš, co myslím: 

/******************************************************************************

                              Online C++ Compiler.
               Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.

*******************************************************************************/

#include <iostream>

int main()
{
  unsigned char a = 0xAB;
  unsigned char b = 0xCD;

  unsigned short x = (a << 8);

  printf("Answer is 0x%.4X", x);
  return 0;
}

Answer is 0xAB00

...Program finished with exit code 0
Press ENTER to exit console.

Nahlásit jako SPAM
IP: 185.69.68.–
W11 :)
BDS+3
Věrný člen
23. 9. 2024   #7
-
0
-

#5 Marin
Jěště jedna ukázka: 

#include <stdio.h>

int main()
{
  unsigned char a = 0xAB;
  unsigned char b = 0xCD;

  unsigned int x = (a << 8);
  printf("Answer is 0x%.8X", a);
  printf("\nAnswer is 0x%.8X", x);
  
  x = (x << 2);
  printf("\nAnswer is 0x%.8X", x);
  
  x = (x << 2);
  printf("\nAnswer is 0x%.8X", x);
  
  x = (x << 2);
  printf("\nAnswer is 0x%.8X", x);
  
  x = (x << 2);
  printf("\nAnswer is 0x%.8X", x);
  
  x = (x >> 2);
  printf("\nAnswer is 0x%.8X", x);
  
  x = (x >> 2);
  printf("\nAnswer is 0x%.8X", x);
  x = (x >> 2);
  printf("\nAnswer is 0x%.8X", x);
  x = (x >> 2);
  printf("\nAnswer is 0x%.8X", x);
  
  x = (x >> 8);
  printf("\nAnswer is 0x%.8X", x);
  
  return 0;
}
Answer is 0x000000AB
Answer is 0x0000AB00
Answer is 0x0002AC00
Answer is 0x000AB000
Answer is 0x002AC000
Answer is 0x00AB0000
Answer is 0x002AC000
Answer is 0x000AB000
Answer is 0x0002AC00
Answer is 0x0000AB00
Answer is 0x000000AB

...Program finished with exit code 0
Press ENTER to exit console.
#include <stdio.h>

int main()
{
  unsigned char a = 0xAB;
  unsigned char b = 0xCD;

  unsigned short x = (a << 8);
  printf("Answer is 0x%.8X", a);
  printf("\nAnswer is 0x%.8X", x);
  
  x = (x << 2);
  printf("\nAnswer is 0x%.8X", x);
  
  x = (x << 2);
  printf("\nAnswer is 0x%.8X", x);
  
  x = (x << 2);
  printf("\nAnswer is 0x%.8X", x);
  
  x = (x << 2);
  printf("\nAnswer is 0x%.8X", x);
  
  x = (x >> 2);
  printf("\nAnswer is 0x%.8X", x);
  
  x = (x >> 2);
  printf("\nAnswer is 0x%.8X", x);
  x = (x >> 2);
  printf("\nAnswer is 0x%.8X", x);
  x = (x >> 2);
  printf("\nAnswer is 0x%.8X", x);
  
  x = (x >> 8);
  printf("\nAnswer is 0x%.8X", x);
  
  return 0;
}

Answer is 0x000000AB
Answer is 0x0000AB00
Answer is 0x0000AC00
Answer is 0x0000B000
Answer is 0x0000C000
Answer is 0x00000000
Answer is 0x00000000
Answer is 0x00000000
Answer is 0x00000000
Answer is 0x00000000
Answer is 0x00000000

...Program finished with exit code 0 Press ENTER to exit console.

Nahlásit jako SPAM
IP: 185.69.68.–
W11 :)
Jerry
~ Anonymní uživatel
512 příspěvků
24. 9. 2024   #8
-
0
-

#1 jisla
a nezapomeň dávat před proměnou typ, na který přetypováváš jinak v tom zdrojáku bude děsnej bordel

#include <iostream>

int main() {	

  float desetine;
  int cele;

  std::cout << "Zadej desetine cislo: ";
  std::cin >> desetine;

  cele = (int) desetine;

  std::cout << "Cele cislo je: " << cele;

  return 0;
}
Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:3cac:c20a:1c5a:3e85...–
Zjistit počet nových příspěvků

Přidej příspěvek

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 37 hostů

Podobná vlákna

Přetypování — založil Pavel Synek

Přetypování — založil Keyzio

C# přetypování — založil ondra

Pretypovani v C — založil TuTi_fruTi

Nefunguje přetypování (Qt) — založil ingiraxo

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý