int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv)...
TRANSCRIPT
![Page 1: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/1.jpg)
����������������������������������
int main() { return 0;}
����
�
![Page 2: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/2.jpg)
���������������
% gcc x.c% ./a.out
% gcc -o x x.c% ./x
�
![Page 3: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/3.jpg)
�������������������������������
int main() { return 1;}
����
������0�����������������������
�
![Page 4: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/4.jpg)
�����������������
% gcc -Wall -o x x.c% ./x
�
![Page 5: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/5.jpg)
���������������������������������������������
int main() { printf("Hi\n"); return 0;}
����
�����������������\n�����������������������������������������������������������������
�
![Page 6: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/6.jpg)
������������������������������������������
#include <stdio.h> int main() { printf("Hi\n"); return 0;}
����
#include���������������import
�
![Page 7: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/7.jpg)
������������������������������
#include <stdio.h> int main() { printf("Ten and ten make %d\n", 10+10); return 0;}
����
����������������������printf�
%d�����������������������int�%f�����������������������double�
%s������������������������������%p�������������������������������
%c���������������������������������
�
![Page 8: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/8.jpg)
�������������������
#include <stdio.h> int main() { printf("Hex 10 and hex 10 make %d\n", 0x10 + 0x10); return 0;}
����
0x������������������������
�
![Page 9: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/9.jpg)
����������������������
#include <stdio.h> int main(){ printf("%p %p\n", main, printf); return 0;}
����
�
![Page 10: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/10.jpg)
������������������������
#include <stdio.h> int main() { int v = 5; printf("At %p is %d\n", &v, v); return 0;}
����
&��������������������������������������
��
![Page 11: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/11.jpg)
&v0x10756
v����0x107565
��
![Page 12: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/12.jpg)
&v
v5
��
![Page 13: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/13.jpg)
������������������������
#include <stdio.h> int main(){ int v = 5; int* p = &v; v = 6; printf("At %p is %d\n", p, *p); return 0;}
����
*�����������������������������������
*����������������������������������������������
![Page 14: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/14.jpg)
p
v5
��
![Page 15: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/15.jpg)
������������������������������������
#include <stdio.h> int main() { int v = 5; int* p = &v;
*p = 7; printf("V at end: %d\n", v); return 0;}
����
��
![Page 16: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/16.jpg)
���������������������������������������
#include <stdio.h> int main() { int v = 5; int* p = &v; printf("At %p is %d\n", p, p[0]); return 0;}
����
��
![Page 17: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/17.jpg)
������������������
#include <stdio.h> int main() { int v = 5; int* p = &v; printf("At %p is %d\n", p+1, p[1]); return 0;}
����
���������������������������������������
��
![Page 18: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/18.jpg)
p
v5 ?
��
![Page 19: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/19.jpg)
���������������������
#include <stdio.h> int main() { int a[3] = { 1, 2, 3 }; int* p = a;
printf("%d, %d, %d\n", a[0], p[1], *(p + 2)); return 0;}
����
��
![Page 20: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/20.jpg)
a[_]1 2 3
p
��
![Page 21: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/21.jpg)
��������������������������������
#include <stdio.h> int main() { int a[3] = { 1, 2, 3 }; int* p = a; int* q = &a; printf("%p = %p, but not %p\n", p, q, &p); return 0;}
����
���������������������������������������������[]������������������������������
��
![Page 22: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/22.jpg)
a[_]1 2 3
p
q
��
![Page 23: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/23.jpg)
����������������������������������
#include <stdio.h> int main() { char* s = "apple"; printf("%s: %c, %c, %c\n", s, s[0], s[1], *(s + 3)); return 0;}
����
��
![Page 24: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/24.jpg)
'a' 'p' 'p' 'l' 'e' 0
s
��
![Page 25: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/25.jpg)
97 112 112 108 101 0
s
��
![Page 26: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/26.jpg)
���������������������������
#include <stdio.h> int main() { char* s = "apple"; printf("%s: %d, %d, %d\n", s, s[0], s[1], *(s + 3)); return 0;}
����
��
![Page 27: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/27.jpg)
�����������������
#include <stdio.h> int main() { char* s[3] = { "apple", "banana", "coconut" }; char** ss = s;
printf("%s (%c...), %s, %s\n", ss[0], ss[0][0], ss[1], s[2]); return 0;}
����
��
![Page 28: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/28.jpg)
ss
s
'a' 'p' ���
'b' 'a' ���
'c' 'o' ���
��
![Page 29: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/29.jpg)
����������������������������
#include <stdio.h>#include <stdlib.h> int main(int argc, char** argv) { int a, b; a = atoi(argv[1]); b = atoi(argv[2]); printf("%d\n", a + b); return 0;}
����
����������atoi()�����������������������������������������������������������������������������
![Page 30: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/30.jpg)
����������������
�������������������������������������������������������������������
������������������������������������������������
� ��char���������������������
� ��short���������������������������������������
� ���int��������������������������������������������������
� ��long����������������������������������
� ��������������������������������������������char*��int*��char**������
��
![Page 31: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/31.jpg)
������������������
#include <stdio.h> int main() { char cs[2] = {0, 1}; int is[2] = {0, 1}; printf("Goes up by 1: %p, %p\n", cs, cs+1); printf("Goes up by 4: %p, %p\n", is, is+1); return 0;}
����
��
![Page 32: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/32.jpg)
���������������
#include <stdio.h> int main(){ char cs[2] = {0, 1}; printf("char size is %ld\n", sizeof(char)); printf("char size is %ld\n", sizeof(cs[0])); printf("address size is %ld\n", sizeof(&cs)); return 0;}
����
����sizeof�������������������������������������
��
![Page 33: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/33.jpg)
����������
#include <stdio.h>#include <stdlib.h> int main() { int* a; a = malloc(100 * sizeof(int));
a[99] = 5; printf("array at %p ends in %d\n", a, a[99]); return 0;}
����
��
![Page 34: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/34.jpg)
�������������
#include <stdio.h>#include <string.h>#include <stdlib.h> int main(int argc, char** argv) { char *a; int len1, len2; len1 = strlen(argv[1]); len2 = strlen(argv[2]); a = malloc(len1 + len2 + 1); memcpy(a, argv[1], len1); memcpy(a + len1, argv[2], len2 + 1); // include terminator printf("%s\n", a); return 0;}
����
��
![Page 35: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/35.jpg)
�����������������
#include <stdio.h>#include <stdlib.h> int main(int argc, char** argv) { int i; int sum = 0; for (i = 1; i < argc; i++) { sum += atoi(argv[i]); } printf("%d\n", sum); return 0;}
����
������������������
��
![Page 36: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/36.jpg)
�������������������������
#include <stdio.h>#include <stdlib.h> int twice(int n) { return n + n;} int main(int argc, char** argv) { printf("%d\n", twice(atoi(argv[1]))); return 0;}
����
������������������
��
![Page 37: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/37.jpg)
��������������
� ����������������������������������byte
� ���������������������bits
0000 0000 � �
0000 0001 � ������0000 0100 � ������0010 0100 � ������������1000 0000 � ��������1111 1111 � ����������������
������������unsigned���������������
�����
![Page 38: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/38.jpg)
��������������
� ����������������������������������byte
� ���������������������bits
0000 0000 � �
0000 0001 � ������0000 0100 � ������0010 0100 � ������������1000 0000 � ����������1111 1111 � ��������������������
������������signed���������������
�������two's complement
�����
![Page 39: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/39.jpg)
��������������������
�����������������������������������������������������������������������������������������
����0x171
1111 1111����0x172
0000 0000
������������������������
������
�����
������������������� ������������
���
������
�����
�����
![Page 40: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/40.jpg)
��������������������
�����������������������������������������������������������������������������������������
����0x171
1111 1111����0x172
0000 0000
char ������ ������ �����������unsigned char ������ ������ ���������short ������� ������� �������������int ������� ������� �������������unsigned int ������� ������� ����������long ������� ������� ���� �� �����
��
![Page 41: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/41.jpg)
������������������������
������������������
1111 0001 0100 0001 0100 0001 0100 0001
����������
�������������������������
��
![Page 42: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/42.jpg)
������������������������
������������������
1111 0001 0100 0001 0100 0001 0100 0001
����������
������������������
��
![Page 43: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/43.jpg)
������������������
�������������������������������������������
� 0����������������
� ������������������������������
��������������������������������������0����1
� &&
� ||
� !
5 && 7�⇒�1� �5 && 0�⇒�0� �!(5 && 0)�⇒�1
��
![Page 44: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/44.jpg)
������������������
#include <stdio.h> int main(int argc, char* argv[]) { int a = 0x0; int b = 0x93; printf("%x %x\n", !a, !b); printf("%x %x %x %x\n", a&&b, a||b, !a||!b, !a&&!b); return 0;}
����
��
![Page 45: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/45.jpg)
��������������
����������������������������������������������������������
� &��������������
� |�������������
� ^��������������
� ~������������������
5101
& 7111
�⇒�5101
� 5101
| 6110
�⇒�7111
� �~(50..101
& 00..000
)�⇒�-1 1..111
5101
^ 6110
�⇒�3011
���������������������������������&&�����||�����
![Page 46: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/46.jpg)
��������������
#include <stdio.h> int main(int argc, char* argv[]) { int a = 0x13; // 0001 0011 int b = 0x55; // 0101 0101 printf("%x %x %x\n", a|0, a&1, ~~a); printf("%x %x\n", a|a&b, a&(a|b)); printf("%x %x\n", ~(a&b), ~a|~b); return 0;}
����
��
![Page 47: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/47.jpg)
������������
�������������������������������������������������������������������
� <<������������������
� >>����������������������������������
�����������������������������������
5101
<< 1�⇒�101010
� �5101
>> 1�⇒�210
� �500101
>> 3�⇒�000
��
![Page 48: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/48.jpg)
������������
#include <stdio.h> int main(void) { int a = 0x1; int b = 0x11; int c = 0x80000000; printf("%i %i %i\n", a<<1, a<<2, a<<3); printf("%i %i\n", b<<5, b*32); printf("%x %x %x %x\n", b, b>>1, b>>2, b>>3); printf("%x %x %x %x\n", c, c>>1, c>>2, c>>3); return 0;}
����
��
![Page 49: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/49.jpg)
�������������������������������������
���������������������������������������������������
������������������
� ������������������ �����������������������������������������
� ����������
��������������������
� ������������������ �����������������������������������������
� ������ ������������������
� ���������������������
��
![Page 50: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/50.jpg)
�������
#include <stdio.h> int main() { int x = 1000000000; // almost 2^30 int y = 2000000000; // almost 2^31 int z = x + y; printf("%d\n", z); // maybe -1294967296 return 0; }
����
Beware:��������������������������������������������������������
�����
![Page 51: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/51.jpg)
�����������
#include <stdio.h> int main() { unsigned int x = 1000000000; // almost 2^30 unsigned int y = 2000000000; // almost 2^31 unsigned int z = x + y; // less than 2^32 printf("%u\n", z); // definitely 3000000000 return 0; }
����
���unsigned int��������
�����
![Page 52: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/52.jpg)
�������������������������
#include <stdio.h> int main() { unsigned int x = 1000000000; // almost 2^30 unsigned int y = 2000000000; // almost 2^31 unsigned int z = x + y; // less than 2^32 printf("%d\n", z); // definitely -1294967296 return 0; }
����
���unsigned int��������������������������������unsigned int���������int��������������������������
�����
![Page 53: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/53.jpg)
�������������������������
#include <stdio.h> int main() { unsigned int x = 1000000000; // almost 2^30 unsigned int y = 2000000000; // almost 2^31 int z = x + y; printf("%d\n", z); // definitely -1294967296 return 0; }
����
��������������������������������������������������������������������
�����
![Page 54: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/54.jpg)
�������������������
�������⇔���������������������� ������int�⇔�unsigned������������������
��������⇒�������
� �����������������������
������unsigned char�⇒�unsigned
� �����������������������
����� char�⇒�int
�������⇒��������
� �����������������������
������unsigned long�⇒�unsigned
� ���������������������������������������������
����� long�⇒�int
��
![Page 55: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/55.jpg)
�������������������
#include <stdio.h> int main(){ char c = -5; int i = c; unsigned u = i;
unsigned u2 = c; printf("%d %u %u\n", i, u, u2); return 0;}
����
��
![Page 56: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/56.jpg)
�������������������
����float�����double����������������floating-point numbers������������
������
float �������� ���������� ���������� ���������double �������� ���������� ����������� ���������
�������������������������������������������������
�����
![Page 57: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/57.jpg)
������� ������������� �������������������������
� �������������������������
Normalized:���������������������������������������
� ���������������������������������
���������
�������
����������
Denormalized:��������������������������������������������
� ������������
���������
���
��������
Infinity:������������������������� ���� �
Not-a-Number:������������������������ �����������������������
� ���� �������
![Page 58: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/58.jpg)
�����������������������
0�����
01001000������
10000000000000000000000
0�⇒���������� �01001000�⇒�normalized
� ���������������������������������
����������������
����������
01001000� ⇒ �������
⇒ �������������������
10000000000000000000000� ⇒ ��������
⇒ ����������������������
⇒ �������������������������
�����
![Page 59: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/59.jpg)
�����������������������
0�����
01001000������
100000000000000000000000x2 0x4 0x4 0x0 0x0 0x0 0x0 0x0
#include <stdio.h>#include <string.h> int main() { int i = 0x24400000; float f; memcpy(&f, &i, sizeof(float)); printf("%g\n", f); return 0;}
����
⇒ ������������������������������
![Page 60: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/60.jpg)
�����������������������
1�����
00000000������
10000000000000000000000
1�⇒���������� �00000000�⇒�denormalized
� ������������
������������
��������
00000000
⇒ �����������������
10000000000000000000000� ⇒ ��������
⇒ ������������������
⇒ ��������������������������
�����
![Page 61: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/61.jpg)
�����������������������
1�����
00000000������
100000000000000000000000x8 0x0 0x4 0x0 0x0 0x0 0x0 0x0
#include <stdio.h>#include <string.h> int main() { int i = 0x80400000; float f; memcpy(&f, &i, sizeof(float)); printf("%g\n", f); return 0;}
����
⇒ �������������������������������
![Page 62: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/62.jpg)
�����������������������
0�����
11111111������
00000000000000000000000
0�⇒���������� �11111111�⇒�special
Infinity:������������������������� ���� �
Not-a-Number:������������������������ �����������������������
� ���� �����
00000000000000000000000�⇒��������
�����
![Page 63: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/63.jpg)
�����������������������
0�����
11111111������
00000000011000000000000
0�⇒����� �11111111�⇒�special
Infinity:������������������������� ���� �
Not-a-Number:������������������������ �����������������������
� ���� �����
00000000011000000000000�⇒�������������
�����
![Page 64: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/64.jpg)
������������������������
������������������
1111 0001 0100 0001 0100 0001 0100 0001
����������
�������������������������
��
![Page 65: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/65.jpg)
������������������������
������������������
1111 0001 0100 0001 0100 0001 0100 0001
����������
������������������
��
![Page 66: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/66.jpg)
������������������������
������������������
1111 0001 0100 0001 0100 0001 0100 0001
����������
�����������������������������������������
��
![Page 67: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/67.jpg)
�������������������
�����������������������������������������������������������������
����0x171
1111 1111����0x172
0000 0000
� Big endian��������������������
1111 1111 0000 0000��������
� Little endian��������������������
0000 0000 1111 1111������
�����������������������
�����
![Page 68: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/68.jpg)
������������������������
������������������
����0xa051
0100 0001����0xa052
0100 0001����0xa053
0100 0001����0xa054
1111 0001
����������
�������������������������
��
![Page 69: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/69.jpg)
������������������������
������������������
����0xa051
0100 0001����0xa052
0100 0001����0xa053
0100 0001����0xa054
1111 0001
����������
������������������
��
![Page 70: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/70.jpg)
������������������������
������������������
����0xa051
0100 0001����0xa052
0100 0001����0xa053
0100 0001����0xa054
1111 0001
����������
�����������������������������������������
���
![Page 71: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/71.jpg)
����������������������
������������������������������������������
char���������
ASCII����������
'a' � 97'b' � 98...
'A' � 65'B' � 66���'0' � 48'1' � 49���
�������
![Page 72: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/72.jpg)
����������������������
������������������������������������������
char���������
�����������������������������������������������������������������������������������
����0xf01
97 'a'
����0xf02
112 'p'
����0xf03
112 'p'
����0xf04
108 'l'
����0xf05
101 'e'
����0xf06
0
char*��������������������������������������
���
![Page 73: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/73.jpg)
���������������������������
#include <stdio.h> int main() { char* s = "apple"; printf("%s: %d, %d, %d\n", s, s[0], s[1], s[2]); return 0;}
����
���
![Page 74: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/74.jpg)
������������������������
������������������
����0xa051
0100 0001����0xa052
0100 0001����0xa053
0100 0001����0xa054
1111 0001
����������
�������������������������
���
![Page 75: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/75.jpg)
������������������������
������������������
����0xa051
0100 0001����0xa052
0100 0001����0xa053
0100 0001����0xa054
1111 0001
����������
������������������
���
![Page 76: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/76.jpg)
������������������������
������������������
����0xa051
0100 0001����0xa052
0100 0001����0xa053
0100 0001����0xa054
1111 0001
����������
�����������������������������������������
���
![Page 77: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/77.jpg)
������������������������
������������������
����0xa051
0100 0001����0xa052
0100 0001����0xa053
0100 0001����0xa054
1111 0001
����������
����������������������������
���
![Page 78: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/78.jpg)
������������������������
������������������
����0xa051
0100 0001����0xa052
0100 0001����0xa053
0100 0001����0xa054
1111 0001
����������
��������������������������������������
���
![Page 79: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/79.jpg)
�����
#include <stdio.h> int main() { char* s = "apple"; short* p = (short *)s;
printf("%s: %d %d\n", s, *p, s[0] + (s[1] * 256)); return 0;}
����
���
![Page 80: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/80.jpg)
�����
#include <stdio.h> int main() { float f = 2.5; int i = *(int *)&f; printf("%f %d\n", f, i); return 0;}
����
�����������������������������������������������������
���
![Page 81: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/81.jpg)
������������memcpy
#include <stdio.h>#include <string.h> int main() { float f = 2.5; int i; memcpy(&i, &f, sizeof(int)); printf("%f %d\n", f, i); return 0;}
����
�������������������������������������������
![Page 82: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/82.jpg)
����������������
� �����������������sizeof(int*)������
���������������������������������
��������������������������
� int����������������������������������������������
�����������������������������������
� ���������int��short��long�������������������������
int�����������������������
long��������������������
intptr_t������������������������#include <inttypes.h>
�������
![Page 83: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/83.jpg)
�����������������������������
#include <stdio.h> int main(void) { int i; float f = 0.0; for (i = 0; i < 10; i++) { f = f + 0.1; } printf("%f\n", f); return 0;}
����
f��������1.0�������������������������������������
�������
![Page 84: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/84.jpg)
��������������������������
#include <stdio.h>#include <limits.h> int check_grow (int x) { return (x+1) > x;} int main (void) { printf ("%d\n", (INT_MAX+1) > INT_MAX); printf ("%d\n", check_grow(INT_MAX)); return 0;}
����
��������������������������������������-O2�������������������������������������������
�������
![Page 85: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/85.jpg)
����������������������������
#include <stdio.h>#include <limits.h> int check_grow (unsigned x) { return (x+1) > x;} int main (void) { printf ("%d\n", (UINT_MAX+1) > UINT_MAX); printf ("%d\n", check_grow(UINT_MAX)); return 0;}
����
���������������������
�������
![Page 86: int main() { return 0;cs4400/c+representation.pdf#include #include int main(int argc, char** argv) {int a, b; a = atoi(argv[1]); b = atoi(argv[2]);](https://reader030.vdocuments.us/reader030/viewer/2022040319/5e41acf1ff471a55ba198623/html5/thumbnails/86.jpg)
������������������
#include <stdio.h> void set(int *i, float *f, int *j) { printf("f at %p, j at %p\n", f, j); *j = 1; *f = 0.0; /* what if `j` and `f` at same address? */ *i = *j;} int main (void) { int i, j; set(&i, (float *)&j, &j); printf ("%d %d\n", i, j); return 0;}
����
����������������������������������������������