How type casting works ?


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users How type casting works ?
# 1  
Old 06-02-2009
How type casting works ?

I am having a doubt with type casting in C. Very often in network programming, we have something like this:

char *data = ...;
struct iphdr *ip = (struct iphdr *) data;

where iphdr is define in netinet/ip.h.

Let us say that the size of the content of held by 'data' is much more than sizeof(struct iphdr). But why are we still able to cast ? Does it mean that while casting to struct iphdr, the compiler attempts to take the first sizeof(struct iphdr) bytes from data and assigns it to 'ip' ? What if the data variable has lesser bytes than sizeof(struct iphdr)?
# 2  
Old 06-02-2009
It is up to the programmer to set up a correct cast. If the object has fewer bytes than what it is cast to - then you can read/write past the end of the object, a data overrun. Which results, usually, in odd behavior, data corruption or sometimes a segfault or a sigbus error...
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Programming

Very strange output with casting

Hi All, I am having a strange issue. Below is the code snippet. If I print fraction * (double)::pow((double)10,scalingFactor) which is a double I am getting 154 when I type cast that to int as (int)( ((fraction) * ((double)::pow((double)10,scalingFactor)))) it is becoming 153. Not sure why... (0 Replies)
Discussion started by: arunkumar_mca
0 Replies

2. Shell Programming and Scripting

Casting the data command !

Hey guys. 1st problem: I have to create a script for every hour run a script against a DB and then produce results to log file and eventually email. I have to manipulate the date command from something like this date '+%F %H:%M.%s' which produces the below the below result 2014-08-01... (2 Replies)
Discussion started by: mo_VERTICASQL
2 Replies

3. Shell Programming and Scripting

Type casting problem

hi guys, i m new to shell script.. i dont know how to type cast string into integers and i mention my problem below.. date="21091988" month=$((${date:2:2})) # extract the month from previous date variable temp=$(($month*23)) when i am trying to calculate the temp value i got the... (5 Replies)
Discussion started by: raadhaakrishnan
5 Replies

4. Programming

C++ type-casting a member variable in const methods

Is it permitted to type-cast a member variable passed in as a parameter in a member const method .. I am doing something like : in a return-type method () const { variable other = long(member variable) } this other assigned variable is not updating and I wonder if type-casting in such... (1 Reply)
Discussion started by: shriyer123
1 Replies

5. UNIX for Dummies Questions & Answers

>./a.pl works, >a.pl - does not

When I try to execute script, I get message: >aa.pl zsh: command not found: aa.pl but >./aa.pl works OK. What to change in environment to force the former way to work? Thank you, Alex Z (4 Replies)
Discussion started by: zzol
4 Replies

6. Shell Programming and Scripting

Problem with type-casting in awk

Hi I'm trying to write a script which takes an integer as input and checks for files with size > input and displays it on screen. The code I've tried : echo 'Enter the min file size expected' read filesize du -ah <folder name> | awk -F: '$1>int(filesize) {print $1,$2)' is always... (28 Replies)
Discussion started by: vivek.bharadwaj
28 Replies

7. Shell Programming and Scripting

casting

Hi everyone, I was wondering how i could cast a floating value to an integer in csh Thanks (0 Replies)
Discussion started by: ROOZ
0 Replies

8. Programming

array type has incomplete element type

Dear colleagues, One of my friend have a problem with c code. While compiling a c program it displays a message like "array type has incomplete element type". Any body can provide a solution for it. Jaganadh.G (1 Reply)
Discussion started by: jaganadh
1 Replies

9. Shell Programming and Scripting

String type to date type

Can one string type variable changed into the date type variable. (1 Reply)
Discussion started by: rinku
1 Replies
Login or Register to Ask a Question