Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

size_t und int / C++

Diskussion: size_t und int / C++ im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hallo Leute, kennt sich jemand damit aus? Ich habe bisschen gegoogelt....es gab einige vorschläge zum casten, aber ich bin ...

Like Tree1Likes
  • 1 Post By blue182

Antwort
Alt 21.05.11, 18:53   #1 (permalink)
 
Benutzerbild von _fux_
 
Registriert seit: 13.09.05
_fux_ Leistung: Abacus
Likes: 5
Standard size_t und int / C++

Anzeige

Hallo Leute,

kennt sich jemand damit aus? Ich habe bisschen gegoogelt....es gab einige vorschläge zum casten, aber ich bin mir bei folgendem nicht sicher:

wenn size_t = 10 ist, bekommt der int wert nach dem cast auch wirklich die 10, oder was passiert da im hintergrund?
Falls ich es schneller rausfinden sollte als hier antworten gegeben werden, poste ich das natürlich hier

okay, so gemacht:

Zitat:
// sektorsize ist vom typen size_t
int count = static_cast<int>(sektorsize);

Geändert von _fux_ (21.05.11 um 18:58 Uhr)
_fux_ ist offline   Mit Zitat antworten
Alt 21.05.11, 19:49   #2 (permalink)
 
Registriert seit: 06.06.09
Thunderb0lt Leistung: 8086
Likes: 6
Standard

Bei einem solchen cast musst du vorsichtig mit möglichen Überläufen sein. Außerdem wirst du damit wohl bei 64 Bit Systemen Probleme bekommen.

Du könntest dir mal numeric_cast von boost anschauen.
__________________
A good programmer looks both ways before crossing a one-way street.

Die Politik kann uns nur für so dumm verkaufen, wie wir sind.
Thunderb0lt ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 22.05.11, 05:45   #3 (permalink)
Themenstarter
 
Benutzerbild von _fux_
 
Registriert seit: 13.09.05
_fux_ Leistung: Abacus
Likes: 5
Standard

ah danke,
dummerweise finde ich das include nicht oder das namespace (habe boost schon eingebaut), nen tipp?

einfach:

#include <boost/cast.hpp>

dann funtzt auch boost::numeric_cast

aber gut, so kann ich auch wenigsten exceptions fangen

Geändert von _fux_ (22.05.11 um 05:49 Uhr) Grund: lösung gefunden
_fux_ ist offline   Mit Zitat antworten
Alt 22.05.11, 21:24   #4 (permalink)
 
Benutzerbild von blue182
 
Registriert seit: 21.08.10
blue182 Leistung: Facit NTK
Likes: 10
Standard

Zitat:
Zitat von _fux_ Beitrag anzeigen
Hallo Leute,

kennt sich jemand damit aus? Ich habe bisschen gegoogelt....es gab einige vorschläge zum casten, aber ich bin mir bei folgendem nicht sicher:

wenn size_t = 10 ist, bekommt der int wert nach dem cast auch wirklich die 10, oder was passiert da im hintergrund?
Falls ich es schneller rausfinden sollte als hier antworten gegeben werden, poste ich das natürlich hier

okay, so gemacht:
size_t ist nichts anderes als ein unsigned int.
blue182 ist offline   Mit Zitat antworten
Alt 22.05.11, 21:40   #5 (permalink)
Themenstarter
 
Benutzerbild von _fux_
 
Registriert seit: 13.09.05
_fux_ Leistung: Abacus
Likes: 5
Standard

das was ich rausgefunden habe ist, das size_t nicht plattform unabhängig ist und zu problemen führen kann, aus diesem grund will ich programatisch "sicher" gehen.
(muss plattform unabhängige software bauen, bzw. der numerische hintergrund soll plattforum unabhängig bleiben.....und gewisse umstände führen dazu, das ich size_t benutzen muss.....)

wie auch immer.....
_fux_ ist offline   Mit Zitat antworten
Alt 22.05.11, 21:58   #6 (permalink)
 
Registriert seit: 06.06.09
Thunderb0lt Leistung: 8086
Likes: 6
Standard

Zitat:
Zitat von blue182 Beitrag anzeigen
size_t ist nichts anderes als ein unsigned int.
Das trifft wohl auf die meisten 32 Bit Systeme zu, aber der Standard gibt das nicht vor.

Zitat:
The types used for size_t and ptrdiff_t should not have an integer conversion rank greater than that of signed long int unless the implementation supports objects large enough to make this necessary.
Zitat:
Its implementation-defined value shall be equal to or greater in magnitude (absolute value) than the corresponding value given below, with the same sign.
[...]
— limit of size_t
SIZE_MAX 65535
__________________
A good programmer looks both ways before crossing a one-way street.

Die Politik kann uns nur für so dumm verkaufen, wie wir sind.
Thunderb0lt ist offline   Mit Zitat antworten
Alt 22.05.11, 22:51   #7 (permalink)
 
Benutzerbild von blue182
 
Registriert seit: 21.08.10
blue182 Leistung: Facit NTK
Likes: 10
Standard

Zitat:
Zitat von _fux_ Beitrag anzeigen
das was ich rausgefunden habe ist, das size_t nicht plattform unabhängig ist und zu problemen führen kann, aus diesem grund will ich programatisch "sicher" gehen.
(muss plattform unabhängige software bauen, bzw. der numerische hintergrund soll plattforum unabhängig bleiben.....und gewisse umstände führen dazu, das ich size_t benutzen muss.....)

wie auch immer.....
Zitat:
Zitat von Thunderb0lt Beitrag anzeigen
Das trifft wohl auf die meisten 32 Bit Systeme zu, aber der Standard gibt das nicht vor.
Nope, Standard ist das nicht, aber mir ist bisher nichts anderes unter gekommen.
Der Integer kann unterschiedlich gross sein. Je nach Plattform ist der Integer 2 bis 8 Byte gross.

Wenn du viel Wert auf Plattformunabhaengigkeit legst, schau dir mal stdint.h an Klick Mich.
_fux_ likes this.
blue182 ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » size_t und int / C++
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus



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