This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center.
Closed 9 years ago.
int main() {
int i;
int four_ints[4];
char* c;
for(i=0; i<4; i++) four_ints[i] = 18;
c = (char*)four_ints;
for(i=0; i<4; i++) c[i] = 24;
printf("%x\n", four_ints[2]);
}
So if I print like that it will simply print 12.
However if I change it to printf("%x\n", four_ints[11])
It suddenly prints 28ac90
Why would it do that?
In the second statement printf("%x\n", four_ints[11]) you access a position of the array that was not reserved for your program (int four_ints[4]). That is you have no guarantees of what is stored on a not reserved portion of memory.
Related
This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center.
Closed 9 years ago.
I'm trying to covert an int to char. Is there any way to do that?
For example:
{
int i;
char d;
i = 55;
d = i;
printf("%c\n", d);
}
How do I make d = 55?
If you want to put the number 55 into a string, use sprintf
Indeed your example can do what you want.
If you really want to place safe, you may:
d = (char) i;
Try this code segment:
printf("%d\n", d);
char are presented in the memory as binary format wich is equivalent to a number and this number is called a code ascii. when you print the code ascii with "%c" Then it will print the charchter equivalent to this code ascii
This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center.
Closed 9 years ago.
I have to write a program in c language and this is the code : The problem is that when I try to compile it it says : syntax error before return .Where is my error?
#include <stdio.h>
int main (void)
{
char i,c2,j;
int c=4;
i=j=3;
while (++i <=c)
{
int j=1;
printf("\n Nr1=%c Nr2=%d",64+i,c2);
} do;
return 1;
}
Remove the do from your code. Just while (++i <= c) { /* ... */ };
You are redeclaring j inside the while loop. Remove int j=1;
and remove the do; at the end of your while
There is no such thing as while ... do loop in C. There are while loops or do ... while loops.
This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center.
Closed 9 years ago.
i am trying to compare array elements and idea is to collect all dissimilar element to other temp[] array. I think it is going somewhere wrong ...unable to understand...please help me
#include <stdio.h>
#include <stdlib.h>
#define SIZE 30
int my_arr[SIZE] = {10,20,45,63,89,20,15,12,89,24,12,10,89,25,64,39,37,64,95,
27,23,58,97,23,18,56,94,76,32,11
};
int main()
{
int i,j,temp_arr[100];
for(i=0;i<SIZE;i++)
{
for(j=0+i; j<SIZE; j++)
{
if(*(my_arr+i)!=*(my_arr+j))
*(my_arr+i) = temp_arr[i];
}
}
return 0;
}
Here:
*(my_arr+i) = temp_arr[i];
temp_arr[j] is not initialized and you are assigning it to my_arr[i]. You description sounds like you want:
temp_arr[i] = *(my_arr+i);
But then you will end up having holes in the temp_arr. So perhaps you need another index for counting items in the temp_arr.
Something like:
int tmp_cnt = 0;
for(i=0;i<SIZE;i++) {
for(j=0+i; j<SIZE; j++) {
if(*(my_arr+i)!=*(my_arr+j))
temp_arr[tmp_cnt++] = *(my_arr+i);
}
}
This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center.
Closed 9 years ago.
I have been doing A LOT of exercises and examples to get the hang of C, its finally starting to sink in slowly, but surely. Though I'm having one small problem with this and can't amend it for the life of me:
#include "stdafx.h"
#include <stdio.h>
int _tmain(int argc, _TCHAR * argv[]) {
int i, grades[] = {98, 87, 92, 79, 85};
for(i = 0; i <= 4; ++i) {
printf("Element %d is %d\n"
i, grades[i]);
}
i = getchar();
return 0;
}
The problem is the i it is expecting a bracket, I don't know why and any amendment I have tried has failed, I know its a simple problem but it has me stuck.
Any help would be greatly appreciated.
The problem is that you're missing a comma that separates arguments in your call to printf:
printf("Element %d is %d\n", i, grades[i]);
// ^
// This one
This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center.
Closed 10 years ago.
int array[2][2] = {0, 1, 2, 3};
int i;
int sum = 0;
for (i =0; i < 4; ++i)
{
int x, y;
x = i % 2;
if (x)
{
y = 0;
}
else
{
y = 1;
}
sum += array[x][y];
}
printf("%d\n", sum);
It's short enough that you could walk through it yourself (since this is homework) and run each line yourself on paper. If there is any line that you can't figure out, ask a more specific question. Just use pencil, make a box to show the values of x, y, i, sum and all 4 elements of the array. Then walk through changing the values in those boxes as you examine lines of code and you will see exactly what's happening. One thing you should know is that "if (x)" will treat x as true when it is 1.